You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Decimal结果与预期不符:Decimal(0.01)为何等于指定长串精确值

现象原因说明

核心原因是Decimal构造时传入的参数类型差异,以及IEEE 754浮点数的固有精度限制:

  • 你传入Decimal(0.01)时使用的0.01是Python原生的float类型(双精度IEEE 754浮点数)。0.01属于无法用二进制浮点数精确表示的十进制小数,在代码被解释器解析时,这个字面量就已经被存储为最接近0.01的二进制浮点数值,其精确十进制值就是你给出的长串:0.01000000000000000020816681711721685132943093776702880859375
  • Decimal接收float类型参数时,会完整保留该float的实际存储值,不会做任何十进制语义的修正,因此Decimal(0.01)的实际值就是上述长串对应的高精度十进制值,和你用字符串'0.01000000000000000020816681711721685132943093776702880859375'构造的Decimal完全相等。
  • 若要构造出精确等于十进制0.01的Decimal实例,正确用法是传入字符串类型的字面量:Decimal('0.01'),避免float的精度失真问题。

内容的提问来源于stack exchange,提问作者Tomasz Brzezina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:45:02