使用Decimal模块的时候,有些问题会让你抓狂。
from decimal import *
dec = Decimal('0.00000000000000') * Decimal('-0.002000000')
print dec
dec = Decimal('0.00000000000000') / Decimal('-0.0020000000002')
print dec
结果竟然是
-0E-23
-0.0
很显然,我不期待这个结果。只能修改decimal模块了。
在精度不足的情况下,会使用科学记数法:
getcontext().prec = 2
a = Decimal('493.00')
b = Decimal('201.00')
print a - b
结果是2.9E+2,也就是290
还是默认精度吧。
也可以在进行乘法或者除法时候,转换为float计算,结果再转换为Decimal,不过,写的代码会很变态。