一.基础知识准备
在python中进行精确的数值运算时,一般采用`decimal`模块对小数进行运算,其中用到了,十进制数decimal number, context算数上下文参数, signals信号信息
我们发现,使用round()
取整小数时,并不是想要的四舍五入,原因就在于取整规则是采用了奇进偶舍(四舍六入)的方式,简单来说就是,整数部分为奇数,四舍五入.如果是偶数,就采用五舍六入的方式,而这个规则,就属于数值修约
的规则
二.quantize
quantize`(*exp* [,*rounding* [,*context* [,*watchexp* ] ] ] )
舍入后返回一个等于第一个操作数的值,并具有第二个操作数的指数。
>>> Decimal('1.41421356').quantize(Decimal('1.000'))
Decimal('1.414')
## 三.实现四舍五入
舍入后返回一个等于第一个操作数的值,并具有第二个操作数的指数。这个exp的指数就是左边数的指数,exponent
# 实现四舍五入的方法
>>> from decimal import Decimal, ROUND_HALF_UP
>>> Decimal('0.375').quantize(Decimal('0.00'), rounding=ROUND_HALF_UP)
Decimal('0.38')
>>> Decimal('0.125').quantize(Decimal('0.00'), rounding=ROUND_HALF_UP)
Decimal('0.13')