3

文字列フォーマット関数でわからない問題が発生しました。これを修正する理由と方法を説明してください。ありがとう。( python 2.7.3 、[GCC 4.6.3] on linux2 、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 に答える