Ruby浮点数减法错了?

时间:2013-11-10 21:02:18

标签: ruby numbers floating-accuracy rounding-error

任何人都可以解释为什么以下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]。

1 个答案:

答案 0 :(得分:0)

这些数字已经太大了,Ruby已经不能用它们来计算 - 它不能代表那么多。所以,它计算在两个人。四倍的数字将以四肢计算,依此类推。

这取决于浮点数接受的尾数的位数。它总是在基本类型描述中提到。