python中round函数如何使用


Posted in Python onJune 19, 2020

round函数很简单,对浮点数进行近似取值,保留几位小数。比如

>>> round(10.0/3, 2)
3.33
>>> round(20/7)
3

第一个参数是一个浮点数,第二个参数是保留的小数位数,可选,如果不写的话默认保留到整数。

这么简单的函数,能有什么坑呢?

1、round的结果跟python版本有关

我们来看看python2和python3中有什么不同:

$ python
Python 2.7.8 (default, Jun 18 2015, 18:54:19) 
[GCC 4.9.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> round(0.5)
1.0
$ python3
Python 3.4.3 (default, Oct 14 2015, 20:28:29) 
[GCC 4.8.4] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> round(0.5)

如果我们阅读一下python的文档,里面是这么写的:

在python2.7的doc中,round()的最后写着,“Values are rounded to the closest multiple of 10 to the power minus ndigits; if two multiples are equally close, rounding is done away from 0.” 保留值将保留到离上一位更近的一端(四舍六入),如果距离两端一样远,则保留到离0远的一边。所以round(0.5)会近似到1,而round(-0.5)会近似到-1。

但是到了python3.5的doc中,文档变成了“values are rounded to the closest multiple of 10 to the power minus ndigits; if two multiples are equally close, rounding is done toward the even choice.” 如果距离两边一样远,会保留到偶数的一边。比如round(0.5)和round(-0.5)都会保留到0,而round(1.5)会保留到2。

所以如果有项目是从py2迁移到py3的,可要注意一下round的地方(当然,还要注意/和//,还有print,还有一些比较另类的库)。

2、特殊数字round出来的结果可能未必是想要的。

>>> round(2.675, 2)
2.67

python2和python3的doc中都举了个相同的栗子,原文是这么说的:

Note

The behavior of round() for floats can be surprising: for example, round(2.675, 2) gives 2.67 instead of the expected

2.68. This is not a bug: it's a result of the fact that most decimal fractions can't be represented exactly as a

float. See Floating Point Arithmetic: Issues and Limitations for more information.

简单的说就是,round(2.675, 2) 的结果,不论我们从python2还是3来看,结果都应该是2.68的,结果它偏偏是2.67,为什么?这跟浮点数的精度有关。我们知道在机器中浮点数不一定能精确表达,因为换算成一串1和0后可能是无限位数的,机器已经做出了截断处理。那么在机器中保存的2.675这个数字就比实际数字要小那么一点点。这一点点就导致了它离2.67要更近一点点,所以保留两位小数时就近似到了2.67。

以上。除非对精确度没什么要求,否则尽量避开用round()函数。近似计算我们还有其他的选择:

使用math模块中的一些函数,比如math.ceiling(天花板除法)。

python自带整除,python2中是/,3中是//,还有div函数。

字符串格式化可以做截断使用,例如 "%.2f" % value(保留两位小数并变成字符串……如果还想用浮点数请披上float()的外衣)。

当然,对浮点数精度要求如果很高的话,请用?N瑟馍,不对不对,请用decimal模块。

内容扩展:

round(number,num_digits)

Number 需要进行四舍五入的数字。

Num_digits 指定的位数,按此位数进行四舍五入。

注解

  • 如果 num_digits 大于 0,则四舍五入到指定的小数位。
  • 如果 num_digits 等于 0,则四舍五入到最接近的整数。
  • 如果 num_digits 小于 0,则在小数点左侧进行四舍五入。

示例

x=1.343671234
print x
print round(x,1)
print round(x,2)
print round(x,3)

输出结果为:

1.343671234
1.3
1.34
1.344

到此这篇关于python中round函数如何使用的文章就介绍到这了,更多相关python的round函数用法总结内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python中print的不换行即时输出的快速解决方法
Jul 20 Python
python中使用xlrd读excel使用xlwt写excel的实例代码
Jan 31 Python
python tensorflow学习之识别单张图片的实现的示例
Feb 09 Python
利用Python代码实现数据可视化的5种方法详解
Mar 25 Python
python移位运算的实现
Jul 15 Python
Flask项目中实现短信验证码和邮箱验证码功能
Dec 05 Python
tensorflow tf.train.batch之数据批量读取方式
Jan 20 Python
150行python代码实现贪吃蛇游戏
Apr 24 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
Jun 24 Python
python实现暗通道去雾算法的示例
Sep 27 Python
使用OpenCV校准鱼眼镜头的方法
Nov 26 Python
 分享一个Python 遇到数据库超好用的模块
Apr 06 Python
keras实现theano和tensorflow训练的模型相互转换
Jun 19 #Python
Keras 切换后端方式(Theano和TensorFlow)
Jun 19 #Python
python中怎么表示空值
Jun 19 #Python
Python调用OpenCV实现图像平滑代码实例
Jun 19 #Python
使用OpenCV对车道进行实时检测的实现示例代码
Jun 19 #Python
为什么python比较流行
Jun 19 #Python
查看keras的默认backend实现方式
Jun 19 #Python
You might like
解析如何去掉CodeIgniter URL中的index.php
2013/06/25 PHP
PHP响应post请求上传文件的方法
2015/12/17 PHP
php each 返回数组中当前的键值对并将数组指针向前移动一步实例
2016/11/22 PHP
jQuery.Validate 使用笔记(jQuery Validation范例 )
2010/06/25 Javascript
jquery ui dialog ie8出现滚动条的解决方法
2010/12/06 Javascript
在jquery中combobox多选的不兼容问题总结
2013/12/24 Javascript
jQuery插件开发精品教程(让你的jQuery更上一个台阶)
2015/11/07 Javascript
Node.js编写爬虫的基本思路及抓取百度图片的实例分享
2016/03/12 Javascript
jQuery+CSS实现一个侧滑导航菜单代码
2016/05/09 Javascript
微信小程序 教程之WXSS
2016/10/18 Javascript
JS实现淡入淡出图片效果的方法分析
2016/12/20 Javascript
使用 jQuery 实现表单验证功能
2017/07/05 jQuery
AngularJS 仿微信图片手势缩放的实例
2017/09/28 Javascript
JS实现的合并多个数组去重算法示例
2018/04/11 Javascript
原生JS实现前端本地文件上传
2018/09/08 Javascript
js实现数字从零慢慢增加到指定数字示例
2019/11/07 Javascript
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
2020/02/05 Javascript
vue 实现用户登录方式的切换功能
2020/04/14 Javascript
JavaScript基于用户照片姓名生成海报
2020/05/29 Javascript
原生JS运动实现轮播图
2021/01/02 Javascript
使用Python下载歌词并嵌入歌曲文件中的实现代码
2015/11/13 Python
django将图片上传数据库后在前端显式的方法
2018/05/25 Python
Python实现程序判断季节的代码示例
2019/01/28 Python
Pytorch GPU显存充足却显示out of memory的解决方式
2020/01/13 Python
python GUI库图形界面开发之PyQt5控件数据拖曳Drag与Drop详细使用方法与实例
2020/02/27 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
Python‘==‘ 及 ‘is‘相关原理解析
2020/09/05 Python
Selenium关闭INFO:CONSOLE提示的解决
2020/12/07 Python
详解CSS3 用border写 空心三角箭头 (两种写法)
2017/09/29 HTML / CSS
超级英雄、电影和电视、乐队和音乐T恤:Loud Clothing
2019/09/01 全球购物
求职信怎么写
2014/05/23 职场文书
2014教育局对照检查材料思想汇报
2014/09/23 职场文书
党员查摆问题及整改措施
2014/10/10 职场文书
2014年办公室文秘工作总结
2014/12/09 职场文书
小学公民道德宣传日活动总结
2015/03/23 职场文书
浪漫婚礼主持词开场白
2015/11/24 职场文书