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
上进行运算才准确。
>>> 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
上进行运算才准确。