在定义精度时设置python Decimal会产生不精确的Decimal

时间:2014-09-14 03:41:08

标签: python unit-testing floating-point decimal

为什么我不能在我配置的精度中明确声明一个精确的Decimal对象?

from decimal import *
getcontext().prec = 5

num = Decimal(0.1234)
print num

预期产出:

0.1234

实际输出:

0.12339999999999999580335696691690827719867229461669921875

最终,我正在编写单元测试来比较失败的Decimal对象,因为期望值是不精确的。

1 个答案:

答案 0 :(得分:1)

首先将

0.1234转换为标准IEEE-754基数-2浮点数,然后将该近似值转换为十进制数。把它留作一个字符串。

>>> Decimal(0.1234)
Decimal('0.12339999999999999580335696691690827719867229461669921875')
>>> Decimal('0.1234')
Decimal('0.1234')