浮点数的两种不同舍入方法会显示不同的结果。
"%.2f" % 0.015 # => "0.01"
0.015.round(2) # => 0.02
一个是字符串,另一个是浮点数。当四舍五入不为0.5时,它会正确地四舍五入,或者与round函数以同样的方式四舍五入。
"%.2f" % 0.01500000000000001 # => "0.02"
此外,它并不总是表现出那样的行为:
[0.005, 0.015, 0.025, 0.035, 0.045, 0.055, 0.065, 0.075, 0.085, 0.095].map { |x| "%.2f" % x}
# => ["0.01", "0.01", "0.03", "0.04", "0.04", "0.06", "0.07", "0.07", "0.09", "0.10"]
我不确定这是否技术上算是一个bug,但至少它非常令人费解。有人知道为什么两种取整方法会有如此不同的表现吗?