6

当整数除以零时,我们得到编译时错误,而在 double 的情况下没有编译错误,但在运行时我们得到无穷大/NaN 作为结果。知道为什么 int & double 在除以零异常时有不同的行为吗?

void Main()
{
    int number = 20;
    var result1 = number/0; // Divide by zero compile time exception

    double doubleNumber = 20;
    var result2 = doubleNumber/0.0; // no compile time error. Result is infinity or NaN
}
4

3 回答 3

8

因为它是这样定义的。而对于整数,无穷大和 NaN 没有特殊值,因此如果编译器能够在编译时发现问题,则编译器会抛出错误。

于 2012-03-22T08:03:49.293 回答
2

从理论上讲,除以零应该导致无穷大,但是整数数据类型没有任何东西可以代表无穷大。double 数据类型可以,所以不需要在那里抛出异常。

于 2012-03-22T08:03:47.170 回答
1

因为他们的数学背景。无穷大是为浮点数定义的,但不是为整数定义的。

于 2012-03-22T08:03:28.447 回答