前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >细说python中的round()方法

细说python中的round()方法

作者头像
用户7886150
修改2021-01-25 10:29:16
6010
修改2021-01-25 10:29:16
举报
文章被收录于专栏:bit哲学院

参考链接: Python round()

本篇文章,想聊一下Python中的round()方法。 

这时候,有人就会说,round()方法嘛!简单!round() 方法就是返回浮点数x的四舍五入值。 你看下面这些例子: 

round(100.123,1)

round(-100.1)

round(1.75,1)

上面的运行结果: 

100.1

-100

1.8

一切正常,返回浮点数的四舍五入呀。 

    那么你再看下面的例子: 

round(1.25,1)

round(1.65,1)

运行结果: 

1.2

1.6

大家可以试试看!! 嗯??为啥不是1.3和1.7嘞?不是四舍五入的吗?且听我分析~~ 

  在python2中,round()方法确实是 “四舍” ,却不是 “五入”。如果两端一样远,也就是碰到 “5” 时,则保留距离0远的一边。大于 “5” 的数,才 “入”。 

而在python3中,round()方法也是 “四舍”,如果两端一样远,会保留到偶数一边。大于 “5” 的数才“入”。这也就是为什么上面的例子是1.2和1.6了。(本人在Python3中运行的) 

原来如此,round()方法还分情况讨论的呀 

这就完了吗?并没有!再看下面的例子: 

round(2.675,2)

运行结果: 

2.67

到这儿,小伙伴们就纳闷了,为啥? 无论在Python2中还是Python3中,得到的结果都应该是 “2.68”,可这里的结果为什么是 “2.67”? 

莫慌~~ 在机器中浮点数不一定能精确表达,机器做出了截断处理。 在机器中保存的2.675比现实中的2.675要小那么一点点。这一点点就导致了它离2.67要更近一点点,所以保留两位小数时就近似到了2.67。 

不好理解?看下图: Decimal类型可以非常精确地在计算机中存储,我们导入该模块,查看“2.675”  在存储时,确实小那么一点点,所以保留两位小数时,要“四舍”,成了“2.67”。 

总结 

看来,round()方法并不只是简单的四舍五入,不仅要分Python2和Python3讨论,还要看数字在计算机中的存储!!确实值得好好研究。

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档