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 输出一个两行字符的变量
Feb 05 Python
python学习必备知识汇总
Sep 08 Python
Python科学画图代码分享
Nov 29 Python
python+selenium实现登录账户后自动点击的示例
Dec 22 Python
TensorFlow模型保存/载入的两种方法
Mar 08 Python
Python Json模块中dumps、loads、dump、load函数介绍
May 15 Python
用python实现将数组元素按从小到大的顺序排列方法
Jul 02 Python
pygame实现俄罗斯方块游戏(基础篇2)
Oct 29 Python
Django Form and ModelForm的区别与使用
Dec 06 Python
在python image 中实现安装中文字体
May 16 Python
Python爬虫实战案例之爬取喜马拉雅音频数据详解
Dec 07 Python
Python实现灰色关联分析与结果可视化的详细代码
Mar 25 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
咖啡磨器 如何选购一台适合家用的意式磨豆机
2021/03/05 新手入门
从php核心代码分析require和include的区别
2011/01/02 PHP
php eval函数用法 PHP中eval()函数小技巧
2012/10/31 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
PHP文件操作实例总结
2016/09/27 PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
2019/10/22 PHP
JS截取字符串常用方法整理及使用示例
2013/10/18 Javascript
Select标签下拉列表二级联动级联实例代码
2014/02/07 Javascript
使用iframe window的scroll方法控制iframe页面滚动
2014/03/05 Javascript
解决jQuery动态获取手机屏幕高和宽的问题
2014/05/07 Javascript
JQuery控制Radio选中方法分析
2015/05/29 Javascript
详解vuejs几种不同组件(页面)间传值的方式
2017/06/01 Javascript
Vue利用路由钩子token过期后跳转到登录页的实例
2017/10/26 Javascript
vue.js项目打包上线的图文教程
2017/11/16 Javascript
深入解析微信小程序开发中遇到的几个小问题
2020/07/11 Javascript
vue-cli4.0多环境配置变量与模式详解
2020/12/30 Vue.js
Python3中的真除和Floor除法用法分析
2016/03/16 Python
Django框架的使用教程路由请求响应的方法
2018/07/03 Python
python3+selenium实现126邮箱登陆并发送邮件功能
2019/01/23 Python
python 数据提取及拆分的实现代码
2019/08/26 Python
150行Python代码实现带界面的数独游戏
2020/04/04 Python
tensorflow 2.1.0 安装与实战教程(CASIA FACE v5)
2020/06/30 Python
一款css实现的鼠标经过按钮的特效
2014/09/11 HTML / CSS
Html5页面在微信端的分享的实现方法
2018/08/30 HTML / CSS
耐克巴西官方网站:Nike巴西
2016/08/14 全球购物
Johnston & Murphy官网: 约翰斯顿·墨菲牛津总统鞋
2018/01/09 全球购物
水上运动奥特莱斯:Wasterports Outlet
2018/08/08 全球购物
Spotahome意大利:公寓和房间出租
2020/02/21 全球购物
ShellScript面试题一则-ShellScript编程
2014/06/24 面试题
法学研究生自我鉴定范文
2013/12/04 职场文书
会议接待欢迎词
2014/01/12 职场文书
机关会计岗位职责
2014/04/08 职场文书
教育实践活动对照检查材料
2014/09/23 职场文书
2014年班组长工作总结
2014/11/20 职场文书
党课主持词大全
2015/06/30 职场文书
MySQL 十大常用字符串函数详解
2021/06/30 MySQL