为什么10.0 / 3会返回3.3333333333333335?

时间:2016-03-03 05:37:15

标签: ruby floating

为什么10.0/3会返回3.3333333333333335?它似乎不正确,是吗?这是一个错误吗?

10.0/3
# => 3.3333333333333335

2 个答案:

答案 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)