0

我正在使用Flask 框架构建一个金融网站,目前正在为它编写单元测试。我正在使用Babel 包格式化金额,并且遇到了相当奇怪的舍入行为。我希望在 a 的情况下四舍五入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

为什么会这样,更重要的是;我该如何解决这个问题?

ps:我宁愿.245四舍五入.25

[编辑]

我去寻找源代码,它链接到其他一些代码。但我无法真正弄清楚那里出了什么问题以及为什么它似乎随机向上或向下取整。有人知道吗?

4

1 回答 1

4

如果您按照代码进行操作,apply您可以看到对bankersround程序的引用,它告诉我们需要知道的内容。Babel 使用的是银行家四舍五入法,它舍入到 5 上最接近的偶数。因此,0.245 和 .235 舍入到 0.24,因为 0.24 是每个最接近的偶数。高于和低于 5 的值正常舍入。

于 2015-02-11T18:19:58.297 回答