ruby浮点表达式的不同结果

时间:2014-05-07 03:36:34

标签: ruby

案例1和案例2之间有什么区别?

我认为结果应该是相同的:7.78

有人可以向我解释一下吗?

案例1:a=(x/y).round(4)*100

案例2:a=(x/y*100).round(2)

案例1

x=7.0
y=90
a=x/y
=> 0.07777777777777778
a=a.round(4)
=> 0.0778
a=a*100
=> 7.779999999999999


案例2

x=7.0
y=90
a=x/y
=> 0.07777777777777778
a=a*100
=> 7.777777777777778
a=a.round(2)
=> 7.78

1 个答案:

答案 0 :(得分:1)

浮点数不能精确地表示所有实数,并且浮点运算不能精确地表示真正的算术运算,这会导致许多令人惊讶的情况。

我建议阅读:https://en.wikipedia.org/wiki/Floating_point#Accuracy_problems