1. 程式人生 > >用decimal模組增加python的浮點數精度

用decimal模組增加python的浮點數精度

浮點數python預設是17位精度,也就是小數點後16位(16位以後的全部四捨五入了),雖然有16位,但是這個精度越往後越不準.

如果有特殊需求,需要更多的精度,可以用decimal模組,通過更改其裡面getcontext()函式裡面的prec引數,來決定你想要的浮點數精度。

 

from decimal import Decimal
from decimal import getcontext

work_context = getcontext()
work_context.prec = 100
print(work_context)
'''
Context(prec=100, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[], traps=[InvalidOperation, DivisionByZero, Overflow])
<class 'decimal.Decimal'>
''' d = Decimal(1) / Decimal(3) print(type(d), d) """ 0.3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333 """