美文网首页
Python四舍五入

Python四舍五入

作者: 乔布斯的同学 | 来源:发表于2017-03-05 20:10 被阅读5093次

    通常,python四舍五入使用内置的round函数就可以了

    >>> round(0.4)
    0.0
    >>> round(0.5)
    1.0
    

    然而,对于需要精确的四舍五入,就有问题

    >>> round(1.115,2)  # no
    1.11
    >>> round(1.125,2)  # yes
    1.13
    

    原因是,部分小数无法完全用二进制表示

    1.115,存储为——1.1149999999999999911182158029987476766109466552734375
    1.125,存储为——1.125(可完全用二进制表示)
    

    再来看一下文首的两个数值

    0.4,存储为——0.40000000000000002220446049250313080847263336181640625
    0.5,存储为——0.5(可完全用二进制表示)
    

    于是,作为一个较方便的做法,我们可以使用下面方式实现精确的四舍五入

    def round_up(value):
        # 替换内置round函数,实现保留2位小数的精确四舍五入
        return round(value * 100) / 100.0
    

    原理就是将数值放大100倍,以利用下面的精确的四舍五入的结果

    >>> round(0.4)
    0.0
    >>> round(0.5)
    1.0
    

    测试一下

    >>> round_up(1.115)
    1.12
    >>> round_up(1.125)
    1.13
    

    相关文章

      网友评论

          本文标题:Python四舍五入

          本文链接:https://www.haomeiwen.com/subject/rzmegttx.html