Python程式設計:使用decimal定點數計算0.1+0.2
阿新 • • 發佈:2018-12-13
浮點型加法
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之後也不準確,
- 比較好的方法是通過傳入
字串
做計算
參考