double temp = 64.1;
System.out.println("Result = " + (temp*1000));
其結果將是:與詮釋問題上搞雙重倍增
Result = 64099.99999999999
但實際的結果應該是64100
在雙數據類型的情況下
double a = ((temp * 1000) % (0.5 * 1000));
a=7.275957614183426E-12;
在的情況下,將其投入浮動
((((float) temp) * 1000) % (0.5 * 1000));
a=0.0;
爲什麼會這樣?
所以,你的答案是64100 –
投票這是http://stackoverflow.com/questions/179427/how-to-resolve-a-java-rounding-double的副本的-issue – Kerooker
可能的複製[如何解決一個Java的舍入雙問題(http://stackoverflow.com/questions/179427/how-to-resolve-a-java-rounding-double-issue) – Kerooker