案例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
答案 0 :(得分:1)
浮点数不能精确地表示所有实数,并且浮点运算不能精确地表示真正的算术运算,这会导致许多令人惊讶的情况。
我建议阅读:https://en.wikipedia.org/wiki/Floating_point#Accuracy_problems