任何人都可以解释为什么以下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]。
答案 0 :(得分:0)
这些数字已经太大了,Ruby已经不能用它们来计算 - 它不能代表那么多。所以,它计算在两个人。四倍的数字将以四肢计算,依此类推。
这取决于浮点数接受的尾数的位数。它总是在基本类型描述中提到。