3

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

谢谢大家。

4

1 回答 1

1

这是因为四舍五入不仅仅是将大于 5 的最后一位数字向上,同时截断小于 4 的数字,因为这种方法会增加四舍五入数字的预期平均值。

解决方案是使用Bankers' Rounding,这就是您在此处看到的。

于 2012-11-27T04:51:24.777 回答