【发布时间】: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#