Python提供了decimal模塊用於十進制數學計算,它具有以下特點:
- 提供十進制數據類型,並且存儲為十進制數序列;
- 有界精度:用於存儲數字的位數是固定的,可以通過decimal.getcontext().prec=x 來設定,不同的數字可以有不同的精度
- 浮點:十進制小數點的位置不固定(但位數是固定的)
decimal的構建:
可以通過整數、字符串或者元組構建decimal.Decimal,對於浮點數需要先將其轉換為字符串
decimal的context:
decimal在一個獨立的context下工作,可以通過getcontext來獲取當前環境。例如前面提到的可以通過decimal.getcontext().prec來設定小數點精度(默認為28)
from decimal import Decimal from decimal import getcontext d_context = getcontext() d_context.prec = 6 print(d_context) d = Decimal(1) / Decimal(3) print(type(d), d)
log:
Context(prec=6, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow]) <class 'decimal.Decimal'> 0.333333