爲什麼10.0/3
返回3.3333333333333335
?這看起來不正確,是嗎?這是一個錯誤嗎?爲什麼10.0/3返回3.3333333333333335?
10.0/3
# => 3.3333333333333335
爲什麼10.0/3
返回3.3333333333333335
?這看起來不正確,是嗎?這是一個錯誤嗎?爲什麼10.0/3返回3.3333333333333335?
10.0/3
# => 3.3333333333333335
這不是一個錯誤,這是浮點運算的工作原理。一個人不應該計較mantissa太多,而
10.0/3.0 * 3.0 == 10.0
#⇒ true
浮動對象表示使用原生架構的雙精度浮點表示不精確實數。
如果你看看Ruby文檔,你會發現float是雙精度的,並且被認爲是一個近似的數字。 http://ruby-doc.org/core-1.9.3/Float.html
浮點有不同的算術,是一個不精確的數字。你應該知道它的深奧系統。請參閱以下內容:
http://docs.sun.com/source/806-3568/ncg_goldberg.html
你可以在部門執行round
以獲得更準確的答案。
(10.0/3).round(5)
這不是Ruby特定的。大多數語言將float或double類型映射到機器的本地浮動/雙打 –