Int vs Double并除以零异常

时间:2012-03-22 07:59:47

标签: c# .net divide-by-zero

当整数除以零时,我们得到编译时错误;而在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
}

3 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:1)

由于他们的数学背景。 Infinity是为浮点数定义的,但不是整数。

答案 2 :(得分:1)

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