整數除法:揭開1/3 == 0 背後的真相
Java 中的整數除法可能是一個令人困惑的概念,尤其是當它涉及十進制值時。現在的問題是為什麼1 / 3 的結果等於0,即使我們期望它是0.333...
揭開算術
在這個特殊情況下在這種情況下,兩個操作數(1和3)都是整數,這表示預設使用整數運算。儘管將結果變數 (g) 宣告為雙精確型,但除法後會發生隱式轉換。
整數除法的複雜性
整數除法,而不是浮點 -點除法,將結果四捨五入到零。除法的真實結果 0.333... 因此會向下捨去為 0。處理器本質上將小數部分視為不存在。
浮點運算:一個不同的故事
如果兩個運算元都提供為浮點數(3.0 和 1.0),則浮點運算優先。這導致預期的小數值為 0.333...請注意,即使只有第一個運算元是浮點數(例如 3.0 和 1),仍然使用浮點算術。
實用解
要得到小數結果,需要明確地執行浮點除法。這可以透過將兩個運算元轉換為雙精度數或浮點數來實現:
public static void main(String[] args) { double g = (double) 1 / 3; // Explicitly cast to double System.out.printf("%.2f", g); }
或者,可以使用 BigDecimal 類別進行更精確的數字運算。
以上是為什麼 Java 整數除法中 1 / 3 等於 0?的詳細內容。更多資訊請關注PHP中文網其他相關文章!