Int vs Double并除以零exception

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

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 } 

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

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

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