【问题标题】:Int vs Double and divide by zero exception [duplicate]Int vs Double 并除以零异常[重复]
【发布时间】:2012-04-06 18:49:36
【问题描述】:

当整数除以零时会出现编译时错误,而在 double 的情况下没有编译错误,但在运行时我们会得到 infinity/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
}

【问题讨论】:

  • 因为这就是两个数字系统的数学定义
  • 仅仅因为 Infinity/-Infinity/NaN 没有 int 等价物。浮点数学的完成方式与整数数学非常不同。

标签: c# .net divide-by-zero


【解决方案1】:

因为defined 就是这样。而对于整数,无穷大和 NaN 没有特殊值,因此如果编译器能够在编译时发现问题,则会引发错误。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-07
        相关资源
        最近更新 更多