可能重複:
Why 6.84 - 3.6 == 3.2399999999999998爲什麼55.0/1.1等於49.99999999999999?
推而廣之,爲什麼49.99999999999999 * 1.1等於55.0?
我認爲這是浮點運算,但有些困惑,爲什麼會出現這樣一個簡單的總和,爲什麼它也適用於乘法情況。
可能重複:
Why 6.84 - 3.6 == 3.2399999999999998爲什麼55.0/1.1等於49.99999999999999?
推而廣之,爲什麼49.99999999999999 * 1.1等於55.0?
我認爲這是浮點運算,但有些困惑,爲什麼會出現這樣一個簡單的總和,爲什麼它也適用於乘法情況。
你是對的,它完全是與浮點運算有關。許多十進制數字只能在二進制中以一定的精度表示,這就是爲什麼您在這裏看到行爲的原因。這不限於紅寶石 - 我建議閱讀What every computer scientist should know about floating point arithmetic。
過了一段時間,因爲我不得不看這樣的事情,所以感謝您的鏈接! – djlumley 2012-08-09 04:19:29
您的計算機工作在二進制,不是十進制。數字1.1不能是正好以有限二進制表示形式表示,所以它必然是一個近似值。
謝謝,我做了一個搜索,但找不到任何資源。 – djlumley 2012-08-09 04:18:43
是的,每個人都有同樣的問題,但使用不同的數字。 :) – 2012-08-09 04:30:57