0

谁能解释为什么下面的 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]。

4

1 回答 1

0

这些数字已经太大了,Ruby 已经无法将它们计算在内——它不能代表这么多的数字。因此,它将它们计数为二。两倍大的数字将被计算为四,依此类推。

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

于 2014-01-13T09:02:15.813 回答