我知道将浮点数与相等性进行比较是一个坏主意。我的问题是比较来自同一计算的数字是否安全。例如(java代码)
double doSomething(double d) {
return d;
}
void test() {
double result = computation();
double result2 = result;
Double result3 = new Double(result)
Double result4 = new Double(result2)
double result5 = doSomething(result2)
//etc.
//now do all of the above compare equal? i.e.
boolean b = result4.doubleValue() == result //is this true?
//and for other combinations?
}
看起来它们应该是相等的,但由于 FPU 寄存器,我不确定这是否真的是真的。JVM 是否保证它们是相等的?还有一个额外的问题:C 怎么样?
抱歉,如果之前回答过这个问题,我无法找到答案。