我在字符串格式函数中遇到了一个问题,我不明白。请帮助解释为什么以及如何解决这个问题。谢谢。 (linux2上的python 2.7.3,[GCC 4.6.3],ubuntu 12.04 x86)
>>> import locale
>>> locale.format("%0.{0}f".format(2), 1.135, grouping=True)
'1.14'
>>> locale.format("%0.{0}f".format(2), 1.125, grouping=True)
'1.12'
>>> ("%0.2f")%(1.135)
'1.14'
>>> ("%0.2f")%(1.125)
'1.12'
我需要格式化结果来匹配round()函数
>>> round(1.135, 2)
1.14
>>> round(1.125, 2)
1.13
谢谢大家。
答案 0 :(得分:1)
这是因为舍入并不是简单地将最后一个数字大于5,而是截断低于4的数字,因为这种方法会增加舍入数字的预期平均值。
解决方案是使用Bankers' Rounding,这就是你在这里看到的。