處理浮點計算中的精度限制
浮點數廣泛用於計算,但它們具有固有的精度限制。其中一個問題是無法精確表示所有實數,導致計算期間出現捨入錯誤。
浮點表示問題
考慮以下嘗試的程式碼根據某些值計算列數:
double mw = 4.5999999999999996; // Represented as 4.6 internally double p = 0.2; double g = 0.2; int h = 1; int columns = (int) ((mw - (h * 11 * p)) / ((h * 11 * p) + g)) + 1;
儘管想要的結果為2、程式錯誤輸出1。這是因為4.6(4.59999999999999996)的內部浮點表示導致計算中出現舍入錯誤。
解決精確度問題
克服這個精確度問題需要承認浮點的限制算術:
以上是為什麼浮點計算會產生意外的結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!