浮点型加法
0.1+0.2 Out[15]: 0.30000000000000004
decimal定点数加法
import decimal decimal.Decimal(0.1) + decimal.Decimal(0.2) Out[17]: Decimal('0.3000000000000000166533453694') # 设置精度 decimal.getcontext().prec = 6 decimal.Decimal(0.1) + decimal.Decimal(0.2) Out[20]: Decimal('0.300000')
decimal传入浮点型计算
from decimal import * d1 = Decimal(0.1) + Decimal(0.2) print(d1) # 0.3000000000000000166533453694 d2 = Decimal.from_float(0.1) + Decimal.from_float(0.2) print(d2) # 0.3000000000000000166533453694 # 格式化 print(d1.quantize(Decimal("0.00"))) # 0.30 print(d2.quantize(Decimal("0.00"))) # 0.30
定点数传入字符串做计算
d3 = Decimal("0.1") + Decimal("0.2") print(d3) # 0.3
可以看到:
浮点数本身计算的时候是不准确的,
即便转换为decimal之后也不准确,
比较好的方法是通过传入字符串做计算