为什么10.0/3
会返回3.3333333333333335
?它似乎不正确,是吗?这是一个错误吗?
10.0/3
# => 3.3333333333333335
答案 0 :(得分:1)
这不是一个bug,这就是浮点运算的工作方式。一个人不应该关心mantissa太多,而
10.0 / 3.0 * 3.0 == 10.0
#⇒ true
答案 1 :(得分:0)
Float对象使用本机架构的双精度浮点表示来表示不精确的实数。
如果你看一下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)