gpt4 book ai didi

python - python错误中的十进制对象

转载 作者:太空宇宙 更新时间:2023-11-04 00:22:59 24 4
gpt4 key购买 nike

>>> from decimal import *
>>> amount = Decimal(0.00114206599999999995793953377898333201301284134387969970703125)
>>> sZ = Decimal(0.0001)
>>> amount.quantize(sZ, rounding=ROUND_DOWN)
Traceback (most recent call last):
File "<console>", line 1, in <module>
decimal.InvalidOperation: [<class 'decimal.InvalidOperation'>]
>>>
>>> amount = amount - (amount % sZ)
>>> amount
Decimal('0.001100000000000000052713909626')
>>> amount.quantize(sZ, rounding=ROUND_DOWN)
Traceback (most recent call last):
File "<console>", line 1, in <module>
decimal.InvalidOperation: [<class 'decimal.InvalidOperation'>]
>>>

我希望得到 0.011

任何人都可以向我解释我示例中的 python Decimal 出了什么问题吗?

基本上我只想得到一个数字,它是 sZ( block 大小)的多个数,并从“数量”向下舍入(它可能永远不会更多)。

最佳答案

如果您确实关心精度,则需要执行以下操作:

>>> from decimal import *
>>> amount = Decimal('0.00114206599999999995793953377898333201301284134387969970703125')
>>> sZ = Decimal('0.0001')
>>> amount.quantize(sZ, rounding=ROUND_DOWN)

问题是 float 有精度问题,将 float 作为参数传递给 Decimal 已经失去了精度。

关于python - python错误中的十进制对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48467677/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com