提问人:medi_kirk 提问时间:11/11/2013 最后编辑:the Tin Manmedi_kirk 更新时间:1/13/2014 访问量:275
Ruby 浮点数减法错误?
Ruby floating number subtraction wrong?
问:
谁能解释一下为什么下面的 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赞
Gangnus
1/13/2014
#1
这些数字已经太大了,Ruby 已经无法将它们计算在 1 中了——它不能代表这么多数字。所以,它把它们分成两部分。大两倍的数字将以四为单位计算,依此类推。
这取决于浮点数的尾数可以接受的位数。它总是在基本类型描述中提及。
评论
Float
Float