【发布时间】:2011-06-26 10:42:58
【问题描述】:
由于某种原因,Decimal 对象在相乘时会丢失精度。没有理由发生这样的事情。请检查测试用例并启发我。
from decimal import *
getcontext().prec = 11
a = Decimal('5085.28725881485')
b = 1
print getcontext()
print 'a = '+str(a)
print 'b = '+str(b)
print 'a * b = '+str(a * b)
还有输出:
Context(prec=11, rounding=ROUND_HALF_EVEN, Emin=-999999999, Emax=999999999, capitals=1, flags=[], traps=[DivisionByZero, InvalidOperation, Overflow])
a = 5085.28725881485
b = 1
a * b = 5085.2872588
不确定这是否相关,但使用了python2.6。
【问题讨论】:
-
您将精度设置为 11,结果中有 11 个有效数字。有什么问题?
-
精度不是指点后的数字吗?
-
那么有什么办法可以将精度限制为点之后的数字吗?
标签: python