>> Decimal("0.1") + Decimal("0.1") + Decimal("0.1") - Decimal(-6ren">
gpt4 book ai didi

python - 在 Python 中使用 "Decimal"

转载 作者:行者123 更新时间:2023-11-28 21:25:17 27 4
gpt4 key购买 nike

有人可以解释一下下面发生的事情吗:(我使用 Python 3.3)

1. >>> Decimal("0.1") + Decimal("0.1") + Decimal("0.1") - Decimal("0.3")
Decimal('0.0')

2. >>> Decimal(0.1) + Decimal(0.1) + Decimal(0.1) - Decimal(0.3)
Decimal('2.775557561565156540423631668E-17')

3. >>> Decimal(0.1 + 0.1 + 0.1 - 0.3)
Decimal('5.5511151231257827021181583404541015625E-17')

我知道这与浮点限制有关,如果有人能解释原因我会很高兴

  • "" 与上面示例 1 和 2 之间的区别有什么关系
  • 既然 2 都没有 "",为什么 2 会产生与 3 不同的答案?

最佳答案

简而言之,0.10.3 都不能完全表示为 float:

In [3]: '%.20f' % 0.1
Out[3]: '0.10000000000000000555'

In [4]: '%.20f' % 0.3
Out[4]: '0.29999999999999998890'

因此,当您使用 0.10.3 初始化 Decimal() 时,结果值大约 0.10.3

使用字符串("0.1""0.3")没有这个问题。

最后,您的第二个示例产生了与您的第三个示例不同的结果,因为尽管两者都涉及隐式舍入,但它们涉及舍入到不同的小数位数。

关于python - 在 Python 中使用 "Decimal",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14572101/

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