Int vs Double and divide by zero exception [duplicate]

你离开我真会死。 提交于 2020-01-11 06:06:46

问题


We get compile time error when integer is divided by zero whereas in case of double there is no compilation error but at run-time we get infinity/NaN as the result. Any idea why int & double have different behavior when it comes to divide by zero 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
}

回答1:


Because that's how it's defined. Whereas with integers there are no special values for infinity and NaN, so the compiler throws an error if it can spot the problem at compile time.




回答2:


Because of their mathematical background. Infinity is defined for floating point numbers but not for integers.




回答3:


theoretically speaking division by zero should result in infinity, but the integer datatype has nothing to represent infinity. the double datatype does, so there is no need to throw an exception there.



来源:https://stackoverflow.com/questions/9818386/int-vs-double-and-divide-by-zero-exception

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!