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和MD5实现网站挂马检测程序
Mar 13 Python
python学习基础之循环import及import过程
Apr 22 Python
Python实现基于POS算法的区块链
Aug 07 Python
Python 微信之获取好友昵称并制作wordcloud的实例
Feb 21 Python
Python 中包/模块的 `import` 操作代码
Apr 22 Python
Python List列表对象内置方法实例详解
Oct 22 Python
Python argparse模块应用实例解析
Nov 15 Python
使用Python进行防病毒免杀解析
Dec 13 Python
Python读取yaml文件的详细教程
Jul 21 Python
Python性能测试工具Locust安装及使用
Dec 01 Python
Python爬取梨视频的示例
Jan 29 Python
python基于tkinter制作无损音乐下载工具
Mar 29 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实现文件上传二法
2006/10/09 PHP
PHP 开源AJAX框架14种
2009/08/24 PHP
在PHP中运行Linux命令并启动SSH服务的例子
2014/06/12 PHP
学习PHP Cookie处理函数
2016/08/09 PHP
PHP简单实现循环链表功能示例
2017/11/10 PHP
微信公众号实现扫码获取微信用户信息(网页授权)
2019/04/09 PHP
PHP封装cURL工具类与应用示例
2019/07/01 PHP
Laravel解决nesting level错误和隐藏index.php的问题
2019/10/12 PHP
JavaScript编程开发中的五个实用小技巧
2010/07/22 Javascript
js 浏览器事件介绍
2012/03/30 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
2013/06/08 Javascript
Jquery显示和隐藏元素或设为只读(含Ligerui的控件禁用,实例说明介绍)
2013/07/09 Javascript
jquery动态添加删除div 具体实现
2013/07/20 Javascript
js setTimeout 参数传递使用介绍
2013/08/13 Javascript
jQuery内部原理和实现方式浅析
2015/02/03 Javascript
javascript动态创建链接的方法
2015/05/13 Javascript
jQuery form插件之formDdata参数校验表单及验证后提交
2016/01/23 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
2016/06/01 Javascript
微信小程序 POST请求(网络请求)详解及实例代码
2016/11/16 Javascript
JavaScript触发onScroll事件的函数节流详解
2016/12/14 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
解决Extjs下拉框不显示的问题
2017/06/21 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
2017/07/08 jQuery
使用vue打包进行云服务器上传的问题
2020/03/02 Javascript
Python的净值数据接口调用示例分享
2016/03/15 Python
详解python执行shell脚本创建用户及相关操作
2019/04/11 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
解决Django部署设置Debug=False时xadmin后台管理系统样式丢失
2020/04/07 Python
Ray-Ban雷朋瑞典官方网站:全球领先的太阳眼镜品牌
2019/08/22 全球购物
魅力教师事迹材料
2014/01/10 职场文书
秋季红领巾广播稿
2014/01/27 职场文书
法学院方阵解说词
2014/01/29 职场文书
教师党员公开承诺书
2014/03/25 职场文书
资产运营委托书范本
2014/10/16 职场文书
2014年幼儿园老师工作总结
2014/12/05 职场文书
Python数据结构之队列详解
2022/03/21 Python