当整数除以零时,我们得到编译时错误;而在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
}
答案 0 :(得分:6)
因为它是defined的原因。而对于整数,无穷大和NaN没有特殊值,因此如果编译器能够在编译时发现问题,编译器会抛出错误。
答案 1 :(得分:1)
由于他们的数学背景。 Infinity是为浮点数定义的,但不是整数。
答案 2 :(得分:1)
从理论上讲,除以零应该导致无穷大,但整数数据类型没有任何表示无穷大。 double数据类型,所以不需要在那里抛出异常。