Python ROUND_HALF_UP无法按预期工作

我似乎无法理解十进制文档使用十进制类获得2.775到2.78的舍入.

import decimal
decimal.getcontext().prec = 7
print(decimal.Decimal(2.775).quantize(
    decimal.Decimal('0.00'), 
    rounding=decimal.ROUND_HALF_UP
))
>> 2.77 # I'm expecting 2.78

那应该是2.78,但我一直得到2.77.

编辑:
测试python 3.4

解决方法:

如果您在代码中添加一行:

print (decimal.Decimal(2.775))

然后你会明白为什么它会四舍五入:

2.774999999999999911182158029987476766109466552734375

值2.775,作为文字存储为double,其精度有限.

如果您将其指定为字符串,则将更准确地保留该值:

>>> import decimal

>>> print (decimal.Decimal(2.775))
2.774999999999999911182158029987476766109466552734375

>>> print (decimal.Decimal('2.775'))
2.775
上一篇:06 汇率转换


下一篇:java – 使用模式格式化货币时是否使用正确的数字分隔符?