Python十进制模块的奇怪结果

时间:2015-10-12 08:06:23

标签: python

在以下代码中:

>>> round(Decimal('0.755'), 2)
0.76
>>> round(Decimal('0.735'), 2)
0.73

为什么round(Decimal('0.735'), 2)不是0.74

1 个答案:

答案 0 :(得分:2)

请注意,根据quick-start tutorial

>>> round(a, 1)     # round() first converts to binary floating point
1.3

所以十进制对象被转换回float 然后舍入,给你的行为你可能使用小数来避免。相反,您应该使用.quantize方法:

>>> Decimal('0.735').quantize(Decimal('0.01'))
Decimal('0.74')