【Python】银行家算法(四舍六入五成双)和使用decimal进行四舍五入处理

本文介绍了Python3中如何使用`round()`函数和`'%.nf' % num`遵循银行家算法进行四舍六入五成双的处理。同时,详细阐述了`Decimal`类的`quantize()`方法,用于实现精确的小数位数设定,并列举了各种不同的舍入策略。通过示例代码展示了如何设置保留小数位数并进行四舍五入操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在python3中,round(num,n)和’%.nf’%num都是使用银行家算法进行小数位的处理的,即四舍六入五成双。(python2不记得了)

  • 四舍六入五成双介绍
    和四舍五入不同的是,对于最大小数位下一位为5,其后没其他小数的情况的处理
    例如:1.1x5保留两位小数,最大小数位后为5,这时就判断x是奇数还是偶数,如果是偶数,“5”就舍,如果是奇数,“5”就入

示例(保留2位小数处理):

数值 四舍五入 银行家算法
1.125 1.13 1.12
1.135 1.14 1.14
1.125001 1.13 1.13
  • 使用Decimal进行精度处理
    在百度搜索四舍五入保留两位小数位,会看到有文章写decimal.getcontext().prec=2来实现,实际在python3中,这样是不行的,prec设置的总长度,而不是小数位数;设置prec就类似于在数据库中Decimal(m,n)设置m。

可以使用Decimal()类的quantize(exp,rounding,context)来实现小数位设置

import decimal
a 
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值