gpt4 book ai didi

c++ - 浮点比较特定

转载 作者:行者123 更新时间:2023-11-30 02:37:27 25 4
gpt4 key购买 nike

我有一个关于 float 比较的具体问题。我知道由于精度问题不建议使用 == 比较,但在这种特定情况下,我想知道在所有情况下/编译器中,此声明是否都适用?

float a = 1.02f;
float b = 1.02f;

if(a == b)
{
print(true);
}
else
{
print(false);
}

换句话说,如果我准确地分配 float ,不加、减、降或提升,这是否总是成立?

最佳答案

是的,编译器应该始终如一地将相同的浮点常量转换为相同的值——如果不是这样,那就是编译器中的错误 [这当然不是不可能的]。但是,一旦您对该值执行任何其他操作(例如从包含 cin 的文件中读取它)或进行简单的数学运算(加 1.0,然后减去 1.0),该值就不能保证是不再一样了。

正如所指出的,值“Not A Number”或“NaN”保证永远不会等于任何东西,并且除了 != 之外的所有比较都将为 false ,无论它与什么进行比较 - 这是浮点规范的一部分。但是所有其他常量,只要您只是使用常量分配给变量,它就应该在整个代码中保持不变。

当然,您不能指望两个不同的编译器从相同的源代码中得到完全相同的值 [很多时候它们会这样做,但有时它们只是对最后一位进行一些不同的舍入,或者做一些其他事情就像导致差异的那样]

关于c++ - 浮点比较特定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31573514/

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