【发布时间】:2014-01-06 09:15:55
【问题描述】:
我在我的代码中遇到了一个函数返回一个双精度值的情况,这个双精度值可能是零、负零或完全是另一个值。我需要区分零和负零,但默认的双重比较不需要。由于双打的格式,C++ 不允许使用按位运算符比较双打,所以我不确定如何进行。如何区分这两者?
【问题讨论】:
-
尝试 -0.0 而不是 -0
-
为什么需要消除这些歧义?
-
@Pandrei:例如,
1e-300 / -1e300。 -
@n.m.比较精确相等通常是正确的。负零是为特定用例设计的。为了使用负零,你必须检测它。
-
@BenjaminBannier 不是那个副本。事实证明,另一个问题一开始甚至与负零无关,它只是一个正常的负数,足够小,在默认精度下,打印时看起来像负零。
标签: c++ floating-point comparison zero negative-number