我理解由于值的存储方式,不应对 float 执行相等运算,而应执行阈值比较。但是,当值设置为常数值(比如 0)时使用相等是否安全?
void test() {
double max = 0.0;
do {
if (condition) {
if (max != 0.0) { // Is this safe
// myval is always a large positive number
max = min(myval, max);
} else {
max = myval;
}
}
} while (my_condition);
return myval;
}
我可以在 StackOverflow 上看到几个类似的问题。但我的问题特定于分配了常量零的变量(不是操作的结果)。
最佳答案
0.0
在 IEEE-754 中有精确表示,因此如果两个变量设置为 0.0
,则它们的比较结果应始终为 true。但是,如果在您的代码中 max
确实总是 0.0
,您最好删除 if block ,因为它永远不会执行。
关于c - 在 C 中初始化为零的浮点变量的相等性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29492121/