python 2.7字符串格式为十进制为round函数

时间:2012-11-27 04:15:25

标签: python string format rounding

我在字符串格式函数中遇到了一个问题,我不明白。请帮助解释为什么以及如何解决这个问题。谢谢。 (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

谢谢大家。

1 个答案:

答案 0 :(得分:1)

这是因为舍入并不是简单地将最后一个数字大于5,而是截断低于4的数字,因为这种方法会增加舍入数字的预期平均值。

解决方案是使用Bankers' Rounding,这就是你在这里看到的。