0
我知道比較浮點數與平等是一個壞主意。我的問題是,如果比較來自相同計算的數字是否安全。例如。 (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怎麼樣?
對不起,如果這之前回答,我無法找到答案。
C絕對不能保證這一點。一個可能在一個寄存器中,另一個可能在內存中,可以使用不同的精度。 –
@DavidSchwartz:C要求將值分配給目標的名義類型。只有中間值可以用額外的精度來計算。 –