可能重複時:
Retain precision with Doubles in java
Moving decimal places over in a double表觀不精確遞增和顯示雙重價值
類是不言而喻的。如果你執行這個代碼,double值看起來有些溢出,但是對於所有值都不會發生,而且,如果直接輸出數字,那麼輸出是OK。
public class test {
public static void main(String[] args){
for (double f=1.36; f<1.40; f+=0.01) System.out.println(f);
//Prints 1.36
// 1.37
// 1.3800000000000001 ???????
// 1.3900000000000001 ???????
System.out.println(1.36); //Prints 1.36
System.out.println(1.37); //Prints 1.37
System.out.println(1.38); //Prints 1.38
System.out.println(1.39); //Prints 1.39
}
}
有人可以點亮嗎?如果這是一個bug,那麼在代碼中修復它的最好方法是什麼?任何魔術解決方法?
http://docs.oracle.com/cd/E19957-01/806-3568 /ncg_goldberg.html – NPE
即使JEval沒有正確處理像「1400 * 0.001」這樣的操作(這就是我追蹤錯誤的原因),因此我不認爲是如此愚蠢的問題,因爲它是投票否定 – Whimusical
@ user1352530它是妥善處理的意義上,輸出是完全符合規定的(就downvotes而言,這可能是因爲這個問題可能每天問一次,所以通過一些搜索,你可能會發現一些東西,比如我上面發佈的鏈接[Java常見問題](http://stackoverflow.com/tags/java/info))。 – assylias