我没有用谷歌搜索这个,所以我想问一下如何正确和最终测试 double 值是否大于或等于 0。
我不知何故知道 double 零值(± 0.0 等),我需要检查我的 double 变量是否大于或等于 0。否则,如果它不是负数,可能会更好。
问题是,我可以这样测试吗:
if(myDoubleValue >= 0.0)
(我认为这个可能有问题)
或者像这样会更好:
if(!(myDoubleValue < 0.0))
抱歉,这个问题可能很愚蠢。
最佳答案
值 ±0 仅表示该值是从负值还是正值趋近于 0(当然,这并不是对所有情况的保证)。然而,它仍然是 0。
因此,x >= 0
将包括 +0 和 -0 零。您可以在一个简单的程序中自行测试。 :)
在IEEE754 standard ,它明确表示
Comparisons shall ignore the sign of zero (so +0 = -0).
大多数处理器和实现都使用 IEEE754,因此出于所有实际目的 -0 >= 0
是真的。
对于任意数字 x,x >= 0
和 !(x < 0)
是相同的。 +0 和 -0 也是如此。
正如 aschepler 在 comment 中指出的那样, 两个测试 x >= 0
和 !(x < 0)
当 x 为 NaN(非数字)时不同。 NaN 总是不同于任何实数,因此 !(x < 0)
当 x 为 NaN 时为真。
如果您的计算中可能出现 NaN,您可能需要单独处理。
关于c++ - 如何测试 double 值是否不为负,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40511246/