python——decimal模块

专门处理浮点型数字的模块,其精度高于python的浮点数类型。

0.1+0.1+0.1
#输出:0.30000000000000004  python浮点型数不能精确存储

常用类和方法

decimal.Decimal(builtins.object)
#输入可以是int,str、tuple或其他Decimal对象。若无输入,返回Decimal('0')
decimal.getcontext()
#Context(prec=28, rounding=ROUND_HALF_EVEN, Emin=-999999, Emax=999999, capitals=1, clamp=0, flags=[Inexact, FloatOperation, Rounded], traps=[InvalidOperation, DivisionByZero, Overflow])
#返回decimal类型的一些全局设置。最常用的是prec,表示精度,默认28。

示例

Decimal
import decimal
a=decimal.Decimal('0.01')
a+a+a
#Decimal('0.03')
decimal.Decimal(0.01)
#Decimal('0.01000000000000000020816681711721685132943093776702880859375')
#若直接输入浮点型,精度会出问题,需要转为str类型输入
getcontext().prec
import decimal
decimal.getcontext().prec = 4 
#设置小数点后保留4位
decimal.Decimal('0.123000')
#输出:Decimal('0.123000')   #精度设置不能影响固定输入
decimal.Decimal('0.123')*decimal.Decimal('0.987')
#输出:Decimal('0.1214')   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章