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操作消息队列RabbitMQ的方法教程
Jul 19 Python
Python中标准库OS的常用方法总结大全
Jul 19 Python
python+selenium实现登录账户后自动点击的示例
Dec 22 Python
python实现求解列表中元素的排列和组合问题
Mar 15 Python
Python基于更相减损术实现求解最大公约数的方法
Apr 04 Python
Python面向对象之类的内置attr属性示例
Dec 14 Python
解决python3 pika之连接断开的问题
Dec 18 Python
python 阶乘累加和的实例
Feb 01 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
Jan 23 Python
如何使用Cython对python代码进行加密
Jul 08 Python
Python 如何实现数据库表结构同步
Sep 29 Python
python3代码输出嵌套式对象实例详解
Dec 03 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中addslashes()和stripslashes()实现字符串转义和还原用法实例
2016/01/07 PHP
PHP实现补齐关闭的HTML标签
2016/03/22 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
2019/07/20 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
JavaScript Base64编码和解码,实现URL参数传递。
2006/09/18 Javascript
javascript不同页面传值的改进版
2008/09/30 Javascript
jQuery toggle()设置CSS样式
2009/11/05 Javascript
用jquery实现等比例缩放图片效果插件
2010/07/24 Javascript
关于jQuery UI 使用心得及技巧
2012/10/10 Javascript
让元素在网页中可拖动示例代码
2013/08/13 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
2014/03/27 Javascript
javascript如何定义对象数组
2016/06/07 Javascript
angularJS的radio实现单项二选一的使用方法
2018/02/28 Javascript
前端vue如何使用高德地图
2020/11/05 Javascript
JS时间戳与日期格式互相转换的简单方法示例
2021/01/30 Javascript
Nest.js 授权验证的方法示例
2021/02/22 Javascript
Python实现按特定格式对文件进行读写的方法示例
2017/11/30 Python
详解配置Django的Celery异步之路踩坑
2018/11/25 Python
python处理DICOM并计算三维模型体积
2019/02/26 Python
pandas的to_datetime时间转换使用及学习心得
2019/08/11 Python
如何安装2019Pycharm最新版本(详细教程)
2019/09/26 Python
Django实现基于类的分页功能
2019/10/31 Python
Python格式化输出--%s,%d,%f的代码解析
2020/04/29 Python
python lambda的使用详解
2021/02/26 Python
详解CSS3的perspective属性设置3D变换距离的方法
2016/05/23 HTML / CSS
Roxy美国官网:澳大利亚冲浪、滑雪健身品牌
2016/07/30 全球购物
英国健身仓库:Bodybuilding Warehouse
2019/03/06 全球购物
JDBC操作数据库的基本流程是什么
2014/10/28 面试题
建筑总经理岗位职责
2014/02/02 职场文书
春节请假条
2014/04/11 职场文书
班干部演讲稿
2014/04/24 职场文书
篮球比赛口号
2014/06/10 职场文书
我们的节日端午节活动总结
2015/02/11 职场文书
大学生就业意向书
2015/05/11 职场文书
2016年中学清明节活动总结
2016/04/01 职场文书
Python中使用ipython的详细教程
2021/06/22 Python