gpt4 book ai didi

Python decimal 模块不一致

转载 作者:太空宇宙 更新时间:2023-11-04 09:07:35 24 4
gpt4 key购买 nike

在我的 python 代码中,我使用 decimal 模块,因为我需要非常高的精度。

我有变量abc,其中c = a/b.

我要求 python 打印出以下内容:

print "a: %.50f:" % (a),type(a)
print "b: %.50f:" % (b),type(b)
print "c: %.50f:" % (c),type(c)

产生了。

a: 0.00000006480000292147666645492911155490567409742653: <class 'decimal.Decimal'>
b: 43200001.94765111058950424194335937500000000000000000000000 <class 'decimal.Decimal'>
c: 0.00000000000000149999999999999991934287350973866750 <class 'decimal.Decimal'>

一切都很好,但是为了检查 c 的值,我进入了 Python 的交互模式并直接复制并粘贴了这些数字:

a = decimal.Decimal('0.00000006480000292147666645492911155490567409742653')
b = decimal.Decimal('43200001.94765111058950424194335937500000000000000000000000')

当我请求 a/b 时,我得到:

Decimal('1.500000000000000013210016734E-15')

结果略有不同!我知道 float 问题会导致像这样的小误差发生,但这就是我一直使用 decimal 模块的原因。

谁能告诉我这两个答案的不同之处在哪里?

最佳答案

当您使用字符串格式打印值时(使用 print "a: %.50f:"% (a),type(a)),您将它们隐式转换为 float !

你应该依赖 decimal 的 print 函数,即从它请求一个字符串:

print "a: %s:" % (a, type(a))
print "b: %s:" % (b, type(b))
print "c: %s:" % (c, type(c))

关于Python decimal 模块不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18616345/

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