gpt4 book ai didi

c++ - 对于浮点值 a : Does a*0. 0 == 0.0 对于 a 的有限值总是求值为真?

转载 作者:可可西里 更新时间:2023-11-01 15:53:42 26 4
gpt4 key购买 nike

我一直假设以下测试对于 somefloat 的有限值(没有 INF,没有 NAN)总是会成功:

assert(somefloat*0.0==0.0);

Multiply by 0 optimization据说 double a=0.0double a=-0.0 严格来说不是同一件事。

所以我想知道这是否会导致某些平台出现问题,例如上述测试的结果是否取决于a beeing positive or negative.

最佳答案

如果您的实现使用 IEEE 754 算法(大多数都这样做),那么正零和负零将比较相等。由于表达式的左侧对于有限 a 只能是正零或负零,因此断言将始终为真。

如果它使用某种其他类型的算术,那么只有实现者以及特定于实现的文档才能告诉您。可以说(见评论)标准的措辞可以被理解为暗示它们在任何情况下都必须比较相等,当然没有理智的实现会这样做。

关于c++ - 对于浮点值 a : Does a*0. 0 == 0.0 对于 a 的有限值总是求值为真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13972293/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com