Decimal模块:小数的处理

Decimal模块:小数的处理

小数在Python自带的float类型有很大的误差,就需要Decimal模块来处理。

Decimal的定义:

>>> fromdecimalimport*

>>>x=Decimal('0.70')*Decimal('1.05')

>>> x

Decimal('0.7350')

注意:一般是str类型转为decimal类型,而不是float直接转。

 

Decimal的舍入方式:

#quantize:decimal模块中的round方法

>>> x.quantize(Decimal('0.01'))#round to nearest cent

Decimal('0.74')

>>>Decimal('7.325').quantize(Decimal('1.'),rounding=ROUND_UP)

Decimal('8')

舍入方式:ROUND_CEILING, ROUND_DOWN, ROUND_FLOOR, ROUND_HALF_DOWN,ROUND_HALF_EVEN, ROUND_HALF_UP, ROUND_UP, and ROUND_05UP.

 

配置的改变:

# getcontext方法:查看和设置基本参数。比如设置想得到的小数后精确位数。

>>> getcontext().prec=36

>>> Decimal(1)/Decimal(7)

Decimal('0.142857142857142857142857142857142857')

getcontext().rounding = ROUND_UP

整体的转换:

my_context=Context(prec=60,rounding=ROUND_HALF_DOWN)

setcontext(my_context)  #转换为my_context

#模块自定义了常量BasicContext,ExtendedContext,DefaultContext

#本质:ExtendedContext =getcontext(BasicContext).clear_flags()

setcontext(ExtendedContext)#转换为ExtendedContext

 

其他-string批转为Decimal:

data = map(Decimal, '1.34 1.87 3.45 2.351.00 0.03 9.25'.split())

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值