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 相关文章推荐
windows下python安装pip图文教程
May 25 Python
Python3爬虫之urllib携带cookie爬取网页的方法
Dec 28 Python
python实现石头剪刀布小游戏
Jan 20 Python
Python图像处理PIL各模块详细介绍(推荐)
Jul 17 Python
利用pyecharts实现地图可视化的例子
Aug 12 Python
numpy实现神经网络反向传播算法的步骤
Dec 24 Python
flask框架url与重定向操作实例详解
Jan 25 Python
Python Django form 组件动态从数据库取choices数据实例
May 19 Python
keras实现多GPU或指定GPU的使用介绍
Jun 17 Python
查看keras的默认backend实现方式
Jun 19 Python
如何基于python实现年会抽奖工具
Oct 20 Python
Python中的 Set 与 dict
Mar 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
php中文字符截取防乱码
2008/03/28 PHP
mac下使用brew配置环境的步骤分享
2011/05/23 PHP
php使用sql数据库 获取字段问题介绍
2013/08/12 PHP
php实现加减法验证码代码
2014/02/14 PHP
javascript 动态添加事件代码
2008/11/30 Javascript
再次分享18个非常棒的jQuery表格插件
2011/04/10 Javascript
28个常用JavaScript方法集锦
2015/01/14 Javascript
JS实现获取当前URL和来源URL的方法
2016/08/24 Javascript
深入理解jQuery3.0的domManip函数
2016/09/01 Javascript
AngularJS控制器之间的通信方式详解
2016/11/03 Javascript
Vue.js第四天学习笔记(组件)
2016/12/02 Javascript
Three.js基础部分学习
2017/01/08 Javascript
关于AngularJs数据的本地存储详解
2017/01/20 Javascript
js实现PC端根据IP定位当前城市地理位置
2017/02/22 Javascript
jQuery编写textarea输入字数限制代码
2017/03/23 jQuery
JavaScript实现图片切换效果
2017/08/12 Javascript
angularJs-$http实现百度搜索时的动态下拉框示例
2018/02/27 Javascript
vue中使用vue-print.js实现多页打印
2020/03/05 Javascript
js实现页面图片消除效果
2020/03/24 Javascript
javascript实现随机抽奖功能
2020/12/30 Javascript
django传值给模板, 再用JS接收并进行操作的实例
2018/05/28 Python
python合并已经存在的sheet数据到新sheet的方法
2018/12/11 Python
浅谈python requests 的put, post 请求参数的问题
2019/01/02 Python
Python简易版停车管理系统
2019/08/12 Python
python爬虫中的url下载器用法详解
2020/11/30 Python
python3定位并识别图片验证码实现自动登录功能
2021/01/29 Python
CSS3 透明色 RGBA使用介绍
2013/08/06 HTML / CSS
利用CSS3实现开门效果实例源码
2016/08/22 HTML / CSS
加拿大高尔夫超市:Golf Town
2018/01/12 全球购物
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
Sisley法国希思黎美国官方网站:享誉全球的奢华植物美容品牌
2020/06/27 全球购物
使用索引有什么好处
2016/07/27 面试题
邀请函格式范文
2015/02/02 职场文书
优质护理心得体会
2016/01/22 职场文书
Python如何识别银行卡卡号?
2021/06/10 Python
Java实现字符串转为驼峰格式的方法详解
2022/07/07 Java/Android