Python中的浮点数原理与运算分析


Posted in Python onOctober 12, 2017

本文实例讲述了Python中的浮点数原理与运算。分享给大家供大家参考,具体如下:

先看一个违反直觉的例子:

>>> s = 0.
>>> for i in range(10): s += .1
>>> s
0.9999999999999999
# 错误被累加

再看一个更为普遍,直接影响判断逻辑的例子:

>>> from math import sqrt
>>> a = sqrt(2)
>>> a*a == a
False

之所以会出现以上的结果,在于 Python (更准确地说是计算机硬件体系结构)对浮点数的表示,我们来看计算机(基于二进制)对十进制小数 0.1 的表示,十进制小数向二进制小数转换的方法请见 Python十进制小数与二进制小数相互转换。将十进制小数 0.1 转换为二进制时的结果为 0.0001100110011001....,无限循环,计算机无法展示无限的结果,只能对结果进行截断,这是浮点数精度问题的根源。

“==” on floats

基于以上的考虑,当我们进行浮点数的相等比较时,要特别小心,直接使用 == 是有问题的,一种通用的做法即是,不是检测浮点数是否相等,而是检测二者是否足够接近,

>>> a = sqrt(2)
>>> abs(a*a-2) < epsilon
# 判断是否小于某一小量

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
Python列表(list)常用操作方法小结
Feb 02 Python
在Python的Django框架的视图中使用Session的方法
Jul 23 Python
python队列通信:rabbitMQ的使用(实例讲解)
Dec 22 Python
python获取代码运行时间的实例代码
Jun 11 Python
Python中关键字global和nonlocal的区别详解
Sep 03 Python
对python判断ip是否可达的实例详解
Jan 31 Python
PyTorch搭建一维线性回归模型(二)
May 22 Python
利用pyecharts实现地图可视化的例子
Aug 12 Python
Python捕获异常堆栈信息的几种方法(小结)
May 18 Python
Python使用Matlab命令过程解析
Jun 04 Python
Python CategoricalDtype自定义排序实现原理解析
Sep 11 Python
Python实现灰色关联分析与结果可视化的详细代码
Mar 25 Python
python中获得当前目录和上级目录的实现方法
Oct 12 #Python
Python实现的十进制小数与二进制小数相互转换功能
Oct 12 #Python
Python调用C# Com dll组件实战教程
Oct 12 #Python
python 实现一个贴吧图片爬虫的示例
Oct 12 #Python
Python实现曲线点抽稀算法的示例
Oct 12 #Python
python去除字符串中的换行符
Oct 11 #Python
Python 3.6 性能测试框架Locust安装及使用方法(详解)
Oct 11 #Python
You might like
php将数据库中的电话号码读取出来并生成图片
2008/08/31 PHP
php class中self,parent,this的区别以及实例介绍
2013/04/24 PHP
Mac OS下配置PHP+MySql环境
2015/02/25 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
2017/06/06 PHP
PHP并发查询MySQL的实例代码
2017/08/09 PHP
php mysql PDO 查询操作的实例详解
2017/09/23 PHP
js加入收藏夹代码(兼容ie/ff/op)
2014/05/16 Javascript
JSON格式化输出
2014/11/10 Javascript
零基础搭建Node.js、Express、Ejs、Mongodb服务器及应用开发入门
2014/12/20 Javascript
JavaScript中使用Callback控制流程介绍
2015/03/16 Javascript
js字符串操作方法实例分析
2015/05/06 Javascript
JavaScript 不支持 indexof 该如何解决
2016/03/30 Javascript
使用Bootstrap打造特色进度条效果
2017/05/02 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
2018/04/04 Javascript
详解javascript 正则表达式之分组与前瞻匹配
2018/05/30 Javascript
javascript实现贪吃蛇经典游戏
2020/04/10 Javascript
python实现随机密码字典生成器示例
2014/04/09 Python
Python os模块学习笔记
2015/06/21 Python
Python基于socket模块实现UDP通信功能示例
2018/04/10 Python
python实现图片文件批量重命名
2020/03/23 Python
解决tensorflow测试模型时NotFoundError错误的问题
2018/07/26 Python
python如何解析配置文件并应用到项目中
2019/06/27 Python
TensorFlow实现批量归一化操作的示例
2020/04/22 Python
Django中F函数的使用示例代码详解
2020/07/06 Python
HTML5实现锚点时请使用id取代name
2013/09/06 HTML / CSS
html5自定义video标签的海报与播放按钮功能
2019/12/04 HTML / CSS
TripAdvisor斯洛伐克:阅读评论、比较价格和酒店预订
2018/04/25 全球购物
EJB3.1都有哪些改进
2012/11/17 面试题
活动总结怎么写
2014/04/28 职场文书
学生实习证明范文
2014/09/28 职场文书
公务员考察材料范文
2014/12/23 职场文书
团组织关系介绍信
2019/06/24 职场文书
Pytorch中TensorBoard及torchsummary的使用详解
2021/05/12 Python
Python+OpenCV实现在图像上绘制矩形
2022/03/21 Python
如何开启Apache,Nginx和IIS服务器的GZIP压缩功能
2022/04/29 Servers
win10音频服务未响应怎么解决?win10音频服务未响应未修复的解决方法
2022/08/14 数码科技