为什么Ruby的14.5.round()比“%。0f”%14.5(给出14)做得更好(给出15)

时间:2010-11-20 04:09:49

标签: ruby floating-point

为什么round()printf字符串格式更好?

ruby-1.9.2-p0 > "%.0f" % 14.5
 => "14" 

ruby-1.9.2-p0 > "%.0f" % 14.5000001
 => "15" 

ruby-1.9.2-p0 > 14.5.round
 => 15 

2 个答案:

答案 0 :(得分:3)

仅仅因为你在学校里学到了.5总是四舍五入并不意味着这是唯一正确的方法。有很多不同的rounding modes;你所看到的最有可能是“四舍五入”,它将.5向均数整数舍入;这样做的好处就是不会产生像往常一样的整体向上偏差。

Ruby Flt这样的高质量数学库通常提供了一种明确选择舍入模式的方法。

答案 1 :(得分:1)

“更好的工作”?不,如果你关心的是平均值,那就不行了。因此,朝着均匀的方向前进。

相关问题