Python Decimal未按预期工作

  • 本文关键字:工作 Decimal Python python
  • 更新时间 :
  • 英文 :


十进制(0.001(*-1与十进制(-0.001(不同。

类似地,十进制(0.001(*十进制(-1(与十进制(-0.001(不同。

我疯了吗?它怎么会在这么简单的任务上失败呢?

这是"浮点数学坏了";。

当您执行Decimal(0.001)时,您正在将一个不精确的浮点值转换为十进制(这确实使其精确(:

>>> Decimal(0.001)
Decimal('0.001000000000000000020816681711721685132943093776702880859375')

当您使用字符串表示时,您也会得到精确的Decimal。

>>> Decimal("0.001")
Decimal('0.001')

当你对Decimal进行数学运算时,Decimal上下文的precision值会保持不变,这就是为什么你会看到截断/舍入:

>>> Decimal(-0.001)
Decimal('-0.001000000000000000020816681711721685132943093776702880859375')
>>> Decimal(-0.001) * -1
Decimal('0.001000000000000000020816681712')

最新更新