python returns 中的小数除法结果不准确

Dividing Decimals in python returns inaccurate results

>>> x = Decimal(1000)
>>> y = Decimal(.005)
>>> x * y
Decimal('5.000000000000000104083408559')

我预计结果只有 5

>>> a = 1000
>>> b = .005
>>> a * b
5.0

以上是我的预期。

====

初衷是从Django中分出一个DecimalField。我应该将 Decimal 值转换为 float 吗?让我期待准确的结果?

将其作为字符串传递:

>>> x = Decimal(1000)
>>> y = Decimal(".005")
>>> x * y
Decimal('5.000')

问题是将一些浮点数转换为十进制。以字符串开头不是问题。


关于你的问题:你应该在Decimal上进行运算才准确。