【问题标题】:How is dividing by 0 not a 'divide by zero' exception?如何除以 0 不是“除以零”异常?
【发布时间】:2020-06-11 16:57:31
【问题描述】:

此代码生成System.ArgumentOutOfRangeException,因为numberOfIntervals 是无穷大。但是为什么这不会产生divide by zero 异常呢?计算结果为 -524 / 0。那不应该产生divide by zero 异常吗?

DateTime startDate = new DateTime(2019, 1, 1);
DateTime referenceDate = new DateTime(2020, 6, 8);

double numberOfIntervals = (startDate - referenceDate).TotalDays / 0;

Console.WriteLine(numberOfIntervals);

【问题讨论】:

  • 这能回答你的问题吗? (你将一个双精度除以一个整数)stackoverflow.com/questions/44258124/…
  • 分子是双精度数。所以它成为双精度的最大正数。
  • 它部分回答了我的问题。这很有帮助,但是为什么不把divide by zero也扔给双打呢?
  • 有时在浮点运算中能够表示 INFINITY 很有用...所以1f / 0 == double.PositiveInfinity 将是 True
  • 这肯定是负无穷

标签: c#


【解决方案1】:

实现由IEEE 754标准完成。

除以零:对有限操作数的运算给出精确的无限结果,例如 1/0 或 log(0)。默认情况下,返回 ±infinity。

【讨论】:

猜你喜欢
  • 2015-05-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-01
  • 1970-01-01
相关资源
最近更新 更多