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函数返回多个值的示例方法
Dec 04 Python
python基础教程之序列详解
Aug 29 Python
pyshp创建shp点文件的方法
Dec 31 Python
python 输出所有大小写字母的方法
Jan 02 Python
Python骚操作之动态定义函数
Mar 26 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
Jun 18 Python
Python 计算任意两向量之间的夹角方法
Jul 05 Python
python sorted方法和列表使用解析
Nov 18 Python
使用Python串口实时显示数据并绘图的例子
Dec 26 Python
Keras 中Leaky ReLU等高级激活函数的用法
Jul 05 Python
python 使用三引号时容易犯的小错误
Oct 21 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
Nov 13 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
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
php判断目录存在的简单方法
2019/09/26 PHP
MSN消息提示类
2006/09/05 Javascript
在JavaScript中实现命名空间
2006/11/23 Javascript
利用js获取服务器时间的两个简单方法
2010/01/08 Javascript
JS.elementGetStyle(element, style)应用示例
2013/09/24 Javascript
JavaScript中5种调用函数的方法
2015/03/12 Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
2015/05/06 Javascript
dedecms页面如何获取会员状态的实例代码
2016/03/15 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
JavaScript严格模式下关于this的几种指向详解
2017/07/12 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
2017/12/23 Javascript
angularjs通过过滤器返回超链接的方法
2018/10/26 Javascript
解决vue跨域axios异步通信问题
2019/04/17 Javascript
前后端常见的几种鉴权方式(小结)
2019/08/04 Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
2019/10/10 Javascript
浅谈Django REST Framework限速
2017/12/12 Python
Python读取图片为16进制表示简单代码
2018/01/19 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
django实现将修改好的新模型写入数据库
2020/03/31 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
用python按照图像灰度值统计并筛选图片的操作(PIL,shutil,os)
2020/06/04 Python
python利用线程实现多任务
2020/09/18 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
美国羊皮公司:Overland
2018/01/15 全球购物
教育科学研究生自荐信
2013/10/09 职场文书
中专生自我鉴定范文
2013/12/19 职场文书
秘书行业自我鉴定范文
2013/12/30 职场文书
国窖1573广告词
2014/03/21 职场文书
竞选学生会演讲稿
2014/04/25 职场文书
学校校庆演讲稿
2014/05/22 职场文书
奥巴马当选演讲稿
2014/09/10 职场文书
读《瓦尔登湖》有感:每个人都需要一个瓦尔登湖
2019/10/17 职场文书
MySQL之PXC集群搭建的方法步骤
2021/05/25 MySQL
Java完整实现记事本代码
2022/06/16 Java/Android