c – 对于浮点值a:对于a的有限值,a * 0.0 == 0.0总是为true?

前端之家收集整理的这篇文章主要介绍了c – 对于浮点值a:对于a的有限值,a * 0.0 == 0.0总是为true?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我总是假设以下测试总是会成功的有限值(不是INF,不是NAN)的一些浮点数:
assert(somefloat*0.0==0.0);

Multiply by 0 optimization年,据说双a = 0.0和双a = -0.0并不严格地说同样的事情.

所以我想知道这是否会导致某些平台上的问题,例如上述测试的结果可能取决于蜜蜂的阳性或阴性.

解决方法

如果您的实现使用IEEE 754算术(大多数),则正和负0将相等.由于您的表达式的左侧只能为正值或负值为有限的a,断言将始终为真.

如果它使用某种其他类型的算术,那么只有实现者,希望实现特定的文档可以告诉你.可以说(见评论),标准的措词可以被认为意味着他们必须在任何情况下比较平等,当然没有一个理智的实施.

猜你在找的C&C++相关文章