C# 是否会为浮点数抛出 OverflowException?
Does C# throw OverflowException for floating point numbers?
C# 编译器是否会为浮点数字类型抛出 OverflowException?
我试过这个来弄明白:
try
{
checked
{
double d = Convert.ToDouble(Math.Pow(double.MaxValue, double.MaxValue));
Console.WriteLine(d);
}
}
catch (OverflowException)
{
throw;
}
而我在控制台中看到的 window 是一个 ∞。
调试时∞比异常更有用吗?
不,C# 没有浮点运算的异常。
浮点型有3个特殊值:正无穷大、负无穷大和“不是数字”。
如果计算结果大于可表示的值,则计算溢出而不会抛出异常,结果为正无穷大。 ∞
是它在字符串中的表示方式。
也不例外,它向您展示了正确的值,即 INFINITY (∞
).
您也可以通过 bool isInfinity = double.IsInfinity(d);
检查
bool isInfinity = double.IsInfinity(1.0/0);
returntrue
我正在使用 .Net 核心 3.1。
C# 编译器是否会为浮点数字类型抛出 OverflowException?
我试过这个来弄明白:
try
{
checked
{
double d = Convert.ToDouble(Math.Pow(double.MaxValue, double.MaxValue));
Console.WriteLine(d);
}
}
catch (OverflowException)
{
throw;
}
而我在控制台中看到的 window 是一个 ∞。
调试时∞比异常更有用吗?
不,C# 没有浮点运算的异常。
浮点型有3个特殊值:正无穷大、负无穷大和“不是数字”。
如果计算结果大于可表示的值,则计算溢出而不会抛出异常,结果为正无穷大。 ∞
是它在字符串中的表示方式。
也不例外,它向您展示了正确的值,即 INFINITY (∞
).
您也可以通过 bool isInfinity = double.IsInfinity(d);
bool isInfinity = double.IsInfinity(1.0/0);
true
我正在使用 .Net 核心 3.1。