Int与Double以及除以零的异常

本文关键字:异常 Double Int | 更新日期: 2023-09-27 18:28:42

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

Int与Double以及除以零的异常

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

理论上讲,除以零应该得到无穷大,但integer数据类型不能表示无穷大。double数据类型是这样的,所以没有必要在那里抛出异常。

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