gpt4 book ai didi

c++ - 我们可以依靠 op== 来二进制比较浮点值吗?

转载 作者:IT老高 更新时间:2023-10-28 22:36:31 24 4
gpt4 key购买 nike

我们都知道(对吗?!)不应该通过测试相等性来比较浮点值(operator==)。

但是如果我真的想确定两个 floatab 是否二进制相等?如果不允许它们是 NaN (或其他“特殊值”),这是否“安全”?我可以依靠 operator== 以这种方式运行吗?

最佳答案

(假设 IEEE-754 表示)差不多,但不完全。如果可以排除NaN,还是需要处理+0.0-0.0的二进制编码不同,但是比较相等(因为两者都是完全为零)。

当然,C++ 不需要 IEEE-754。所以严格来说,所有的赌注都没有了。

如果你想检查编码是否相等,只需使用 memcmp(&a, &b, sizeof a)

关于c++ - 我们可以依靠 op== 来二进制比较浮点值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8044862/

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