基本上,我不明白爲什麼當4.35 * 100 = 435.0被轉換爲435的int時,下面的代碼會輸出434,對嗎?Java舍入問題
這是什麼簡單的解釋,這是一個經常出現的問題?
你會如何解決這個問題?
public class RoundOffDemo {
public static void main(String[] args) {
double price = 4.35;
int cents = (int) (100 * price); // Should be 435
System.out.println(cents); // Prints 434!
}
}
可能的重複[浮點運算不能在Java中產生精確的結果](http://stackoverflow.com/questions/1661273/floating-point-arithmetic-not-產生不精確的-成果在-java的)。還有至少一百個其他問題。 – dan04 2011-12-28 23:46:22