Python四舍五入

通常,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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容