python中浮点数和小数的区别_浮点数、小数、价格和部分数量

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

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

但是,如果价格与非整数数量组合在一起,例如在发票或收据中,该怎么办呢。比如说,仙尘的价格是每克19.99美元,一个顾客购买了3.5克的东西。价格是十进制的,而数量是浮动的。在

那么总数是Decimal(19.99) * float(3.5)。但不允许将浮点数和小数相乘:>>> from decimal import *

>>> Decimal(19.99) * float(3.5)

Traceback (most recent call last):

File "", line 1, in

TypeError: unsupported operand type(s) for *: 'Decimal' and 'float'

当然,我们可以先将价格设为浮动,但这样一来,我们就失去了通过将值存储为十进制而获得的任何优势。或者我们可以将数量存储为十进制,但这意味着可以任意选择数量的范围和精度。但是在设计时,开发人员不必知道这个数量需要多少范围/精度(这就是浮点数存在的原因)。有更好的方法吗?在

我相信这个问题以前已经解决过了;进行这种计算的最佳方法是什么?在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值