在我的 python 代码中,我使用十进制模块,因为我需要非常高的精度。
我有变量a、b和c,其中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')
这是一个略有不同的结果!我知道浮点问题会导致像这样的小不精确,但这就是我一直使用十进制模块的原因。
谁能告诉我这两个答案的区别来自哪里?