问题描述
我似乎无法理解使用十进制类将 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 上测试
1楼
如果您在代码中添加一行,则:
print (decimal.Decimal(2.775))
然后你就会明白为什么它会四舍五入:
2.774999999999999911182158029987476766109466552734375
值2.775
作为文字存储为精度有限的双精度值。
如果您改为将其指定为字符串,则会更准确地保留该值:
>>> import decimal
>>> print (decimal.Decimal(2.775))
2.774999999999999911182158029987476766109466552734375
>>> print (decimal.Decimal('2.775'))
2.775