首页 > 解决方案 > python3 十进制计算当值用引号括起来时会有所不同

问题描述

python 中的十进制变量通过算术运算给出不同的结果,具体取决于分配值时数字是否用引号括起来。

>>> x = Decimal(5.36)
>>> y = Decimal(10.56)
>>> x * y
Decimal('56.60160000000000604245542490')

>>> x = Decimal('5.36')
>>> y = Decimal('10.56')
>>> x * y
Decimal('56.6016')

我在这里想念什么?

标签: python

解决方案


第一种情况下的输入值是一对浮点数,根据定义,它们是不精确的。另请参阅浮点数学是否损坏?

在第二种情况下,字符串可以直接转换为Decimal内部表示,这是精确的。

您可以自己验证这一点:

>>> x = Decimal(5.36)
>>> print(x)
5.36000000000000031974423109204508364200592041015625
>>> y = Decimal(10.56)
>>> print(y)
10.5600000000000004973799150320701301097869873046875

演示:https ://ideone.com/kieftu


推荐阅读