python 使用demical模块四舍五入

前言:

断言部分需要用到四舍五入,首先使用的是python自带的round(),做四舍五入进位处理,但使用过程中,发现round似乎是当保留小数位的最后一位是偶数,和保留小数位后一位为5时,就不进位。

 

一、round()方法

在数值3092.145,2保留两位小数时,期望返回的是3092.15,实际返回3092.14,不是期望的结果

 

 二、decimal模块的quantize()方法

需要注意的时,quantize方法有很多种的rounding,四舍五入的模式,这个决定了,返回的结果是否是期望的

想要的结果,保留两位小数,不管小数位第二位是否为偶数,后一位是5时,都要进位

res = Decimal('3209.145').quantize(Decimal('0.00'), rounding="ROUND_HALF_UP")

        try:
            result = Decimal(number).quantize(Decimal('0.00'), rounding="ROUND_HALF_UP")
            return result
        except Exception as e:
            mylog.exception("decimal_round_四舍五入方法出错,请检查{0}".format(e))

参考文章:https://zhuanlan.zhihu.com/p/115431517

posted on 2021-10-21 16:41  刚刚好1  阅读(708)  评论(0编辑  收藏  举报

导航