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

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

概述我总是假设以下测试总是会成功的有限值(不是INF,不是NAN)的一些浮点数: assert(somefloat*0.0==0.0); 在Multiply by 0 optimization年,据说双a = 0.0和双a = -0.0并不严格地说同样的事情. 所以我想知道这是否会导致某些平台上的问题,例如上述测试的结果可能取决于蜜蜂的阳性或阴性. 如果您的实现使用IEEE 754算术(大多数),则正 我总是假设以下测试总是会成功的有限值(不是INF,不是NAN)的一些浮点数:
assert(somefloat*0.0==0.0);

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

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

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

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

总结

以上是内存溢出为你收集整理的c – 对于浮点值a:对于a的有限值,a * 0.0 == 0.0总是为true?全部内容,希望文章能够帮你解决c – 对于浮点值a:对于a的有限值,a * 0.0 == 0.0总是为true?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1249992.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存