在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