0

Flask フレームワークを使用して金融 Web サイトを構築しており、現在その単体テストを作成しています。私はBabel パッケージを使用して金額をフォーマットしていますが、かなり奇妙な丸め動作に遭遇しました。の場合は切り上げが行われる5か、少なくとも一貫性があると予想されます。しかし、これを見てください:

>>> from decimal import Decimal
>>> from babel.numbers import format_currency
>>> print format_currency(Decimal('.235'), 'EUR', locale='nl_NL')
€ 0,24
>>> print format_currency(Decimal('.245'), 'EUR', locale='nl_NL')
€ 0,24

なぜそうなのか、そしてもっと重要なことです。どうすればこれを解決できますか?

.245ps:切り上げられることを希望します.25

[編集]

のコードにリンクしているソースを探しに行きました。しかし、何が問題なのか、なぜランダムに切り上げたり切り下げたりしているように見えるのか、私には本当にわかりません。誰かアイデアはありますか?

4

1 に答える 1

4

コードを までたどるapplyと、手順への参照が表示され、bankersround知る必要があることがわかります。Babel は、バンカー ラウンド方式の丸めを使用しており、5 で最も近い偶数に丸められます。したがって、.245 と .235 は、.24 がそれぞれの最も近い偶数の値であるため、.24 に丸められます。5 より上または下の値は通常丸められます。

于 2015-02-11T18:19:58.297 に答える