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实现图片批量剪切示例
Mar 25 Python
Python字符串处理函数简明总结
Apr 13 Python
Pythont特殊语法filter,map,reduce,apply使用方法
Feb 27 Python
关于Python中空格字符串处理的技巧总结
Aug 10 Python
PyQt5主窗口动态加载Widget实例代码
Feb 07 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
Apr 23 Python
Python生成器generator用法示例
Aug 10 Python
Python + selenium + requests实现12306全自动抢票及验证码破解加自动点击功能
Nov 23 Python
对Python的交互模式和直接运行.py文件的区别详解
Jun 29 Python
python字符串分割及字符串的一些常规方法
Jul 24 Python
浅谈python量化 双均线策略(金叉死叉)
Jun 03 Python
如何让PyQt5中QWebEngineView与JavaScript交互
Oct 21 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
PHP函数篇详解十进制、二进制、八进制和十六进制转换函数说明
2011/12/05 PHP
PHP读取数据库并按照中文名称进行排序实现代码
2013/01/29 PHP
php调整服务器时间的方法
2015/04/03 PHP
php实现过滤字符串中的中文和数字实例
2015/07/29 PHP
漂亮的thinkphp 跳转页封装示例
2019/10/16 PHP
JavaScript入门教程(1) 什么是JS
2009/01/31 Javascript
javascript 进阶篇1 正则表达式,cookie管理,userData
2012/03/14 Javascript
js控制table合并具体实现
2014/02/20 Javascript
node.js中Socket.IO的进阶使用技巧
2014/11/04 Javascript
实例讲解避免javascript冲突的方法
2016/01/03 Javascript
微信小程序 scroll-view组件实现列表页实例代码
2016/12/14 Javascript
前端分页功能的实现以及原理(jQuery)
2017/01/22 Javascript
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
2017/09/06 NodeJs
vue watch自动检测数据变化实时渲染的方法
2018/01/16 Javascript
学习JS中的DOM节点以及操作
2018/04/30 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
2019/04/15 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
vue.js+elementUI实现点击左右箭头切换头像功能(类似轮播图效果)
2019/09/05 Javascript
微信小程序学习总结(五)常见问题实例小结
2020/06/04 Javascript
vue使用better-scroll实现滑动以及左右联动
2020/06/30 Javascript
Django基于ORM操作数据库的方法详解
2018/03/27 Python
pandas值替换方法
2018/07/10 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
Python数据类型之String字符串实例详解
2019/05/08 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
2020/01/10 Python
大数据分析用java还是Python
2020/07/06 Python
德国著名廉价网上药店:Shop-Apotheke
2017/07/23 全球购物
比利时家具购买网站:Home24
2019/01/03 全球购物
上班玩手机检讨书
2014/02/17 职场文书
《雷鸣电闪波尔卡》教学反思
2014/02/23 职场文书
普通员工辞职信范文
2015/05/12 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书
如何理解python接口自动化之logging日志模块
2021/06/15 Python
在redisCluster中模糊获取key方式
2021/07/09 Redis
Nginx配置之禁止指定IP访问
2022/05/02 Servers
MySQL下载安装配置详细教程 附下载资源
2022/09/23 MySQL