C# Int vs Double and divide by zero异常

C# Int vs Double and divide by zero异常,c#,.net,divide-by-zero,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 = doubleNum

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

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

从理论上讲,被零除的结果应该是无穷大,但整数数据类型不能表示无穷大。double数据类型可以,因此不需要在那里抛出异常。

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

因为这就是两个数字系统的数学定义,因为无穷大/-无穷大/NaN没有整数等价物。浮点运算的方式与整数运算截然不同。