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实现面向对像的ASP程序实例
Nov 10 Python
python文件写入实例分析
Apr 08 Python
Python科学画图代码分享
Nov 29 Python
Python实现的多项式拟合功能示例【基于matplotlib】
May 15 Python
Python装饰器基础概念与用法详解
Dec 22 Python
python Tcp协议发送和接收信息的例子
Jul 22 Python
NumPy中的维度Axis详解
Nov 26 Python
Python生成词云的实现代码
Jan 14 Python
Python接口自动化判断元素原理解析
Feb 24 Python
Python虚拟环境的创建和使用详解
Sep 07 Python
Python爬虫模拟登陆哔哩哔哩(bilibili)并突破点选验证码功能
Dec 21 Python
Python读取pdf表格写入excel的方法
Jan 22 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
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
文本加密解密
2006/06/23 Javascript
使用jscript实现二进制读写脚本代码
2008/06/09 Javascript
FireBug 调试JS入门教程 如何调试JS
2013/12/23 Javascript
清除div下面的所有标签的方法
2014/02/17 Javascript
10分钟学会写Jquery插件实例教程
2014/09/06 Javascript
JavaScript使用Math.Min返回两个数中较小数的方法
2015/04/06 Javascript
jquery右下角自动弹出可关闭的广告层
2015/05/08 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
学习JavaScript设计模式之迭代器模式
2016/01/19 Javascript
神奇!js+CSS+DIV实现文字颜色渐变效果
2016/03/16 Javascript
EasyUI中在表单提交之前进行验证
2016/07/19 Javascript
浅谈JavaScript事件绑定的常用方法及其优缺点分析
2016/11/01 Javascript
清除输入框内的空格
2016/12/21 Javascript
jQuery实现倒计时重新发送短信验证码功能示例
2017/01/12 Javascript
js实现手机拍照上传功能
2017/01/17 Javascript
Vue 过渡(动画)transition组件案例详解
2017/01/22 Javascript
vue-cli2.x项目优化之引入本地静态库文件的方法
2018/06/19 Javascript
微信小程序map组件结合高德地图API实现wx.chooseLocation功能示例
2019/01/23 Javascript
[04:45]上海特级锦标赛主赛事第三日TOP10
2016/03/05 DOTA
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
浅谈tensorflow1.0 池化层(pooling)和全连接层(dense)
2018/04/27 Python
django开发post接口简单案例,获取参数值的方法
2018/12/11 Python
Django网络框架之创建虚拟开发环境操作示例
2019/06/06 Python
基于python实现监听Rabbitmq系统日志代码示例
2020/11/28 Python
CSS3 实现的缩略图悬停效果
2020/12/09 HTML / CSS
DKNY品牌官网:纽约大都会时尚风格
2016/10/20 全球购物
美国隐形眼镜销售网站:ContactsDirect
2017/10/28 全球购物
体育教育专业自荐信范文
2013/12/20 职场文书
物流管理专业毕业生自荐信
2014/03/04 职场文书
保护环境建议书
2014/03/12 职场文书
圣诞晚会主持词
2015/07/01 职场文书
2016年感恩母亲节活动总结
2016/04/01 职场文书
七年级作文(600字3篇)
2019/09/24 职场文书
python lambda 表达式形式分析
2022/04/03 Python
python模拟浏览器 使用selenium进入好友QQ空间并留言
2022/04/12 Python