【发布时间】:2018-12-22 23:17:44
【问题描述】:
c# how to check if a number is infinity
答案:Double.IsInfinity、Double.IsPosiviteInfinity等
所以现在我的问题来了:简单地这样做是否有效:
double d = Double.PositiveInfinity;
if(d == Double.PositiveInfinity)
{
//
}
它似乎正在工作,但是!如果事情就这么简单,为什么上述问题的答案会推荐Double.IsPositiveInfinity呢?为什么要提供这种方法?
这让我想知道通过== 运算符检查无穷大是否有任何注意事项...有吗?
【问题讨论】:
-
您可以在source code 中看到 IsPositiveInfinity 方法正在进行相同的比较。 IsInfinity 经过轻微优化,仅通过进行位掩码和一次比较而不是两次比较来查找必要的位。我想提供这些是因为比较浮点数是否完全相等是一种反模式,因为它们的精度可以根据微妙的因素而改变。 NaN 的语义也不鼓励它。
标签: c# floating-point equality infinity