【发布时间】:2011-10-17 13:19:04
【问题描述】:
我用 C# 写了一个简单的divide 函数:
private string divide(int a, int b)
{
return string.Format("Result: {0}", a / b);
}
如您所料,调用MessageBox.Show(divide(3, 0)) 会得到DivideByZeroException。
所以我决定将a 类型转换为浮点数(以获得非整数返回值),如下所示:
private string divide(int a, int b)
{
return string.Format("Result: {0}", (float)a / b);
}
奇怪的是,现在这显示了结果:无穷大。
这对我来说似乎是一个错误,尽管我可能弄错了。是不是因为结果现在是一个浮点数,并且本质上被视为3 / 1 x 10^-99999 或类似的返回值?
我对这个结果感到非常惊讶。
【问题讨论】:
-
float 除以零时从不抛出异常。见stackoverflow.com/questions/4262286/…
-
我要补充一点,使用双打不会改变任何东西! (从技术上讲,您会收到
Double.PositiveInfinity而不是Single.PositiveInfinity)
标签: c# floating-point-precision divide-by-zero