【发布时间】:2013-11-22 14:14:48
【问题描述】:
谁能解释为什么下面的 Ruby 例程给我一个 2.0 的结果?我认为四舍五入是错误的根源。
puts(999_999_999_999_999_9.0 - 999_999_999_999_999_8.0);
= 2.0
同样的错误?
puts(999_999_999_999_999_3.0 - 999_999_999_999_999_2.0);
= 0.0
我正在运行 Ruby 1.9.3p448 (2013-06-27) [i386-mingw32]。
【问题讨论】:
-
是的,这是浮点舍入。使用 Ruby 的
Float类无法完整准确地表示您输入的数字。不精确性分布不均,后两个数字的表示实际上是相同的 - 它是相同的Float对象。 -
感谢您的回答!
标签: ruby numbers floating-accuracy rounding-error