gpt4 book ai didi

python - float 、小数、价格和部分数量

转载 作者:搜寻专家 更新时间:2023-10-30 21:51:23 26 4
gpt4 key购买 nike

虽然这个特定实例中的问题涉及 Django 和 Python,但我想这个问题也出现在其他地方。

浮点值存在精度问题,当用于货币时有时会导致不准确,因此在大多数情况下,固定精度 Decimal 是选择的存储类型。

但是如果价格与非整数数量相结合,例如在发票或收据中,情况又如何呢?假设 Fairy Dust 的价格为 每克 19.99 美元,而客户购买了 3.5 克。价格是小数,而数量是 float 。

然后总数是 Decimal(19.99) * float(3.5)。但是不允许将 float 和小数相乘:

>>> from decimal import *
>>> Decimal(19.99) * float(3.5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for *: 'Decimal' and 'float'

当然,我们可以先将价格转换为 float ,但这样我们就失去了通过将值存储为小数而获得的任何优势。或者我们可以将数量存储为小数,但这意味着任意选择数量的范围和精度。但在设计时,开发人员不一定知道数量所需的范围/精度(这就是 float 存在的原因)。有没有更好的办法?

我确定这个问题之前已经解决了;进行此类计算的最佳方法是什么?

最佳答案

您可以像这样将 float 转换为小数:

Decimal(str(float(3.5)))

作为解决方法。

还有一个理由use float这是一篇有趣的基准测试文章吗

关于python - float 、小数、价格和部分数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17016936/

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