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求素数示例分享
Feb 16 Python
解析Python中while true的使用
Oct 13 Python
Python实现通过文件路径获取文件hash值的方法
Apr 29 Python
老生常谈Python序列化和反序列化
Jun 28 Python
一个Python最简单的接口自动化框架
Jan 02 Python
pandas把dataframe转成Series,改变列中值的类型方法
Apr 10 Python
Python Django实现layui风格+django分页功能的例子
Aug 29 Python
python绘制雪景图
Dec 16 Python
pytorch获取模型某一层参数名及参数值方式
Dec 30 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
Jan 20 Python
python读取yaml文件后修改写入本地实例
Apr 27 Python
python简单实现插入排序实例代码
Dec 16 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 面向对象程序设计(oop)学习笔记(一) - 抽象类、对象接口、instanceof 和契约式编程
2014/06/12 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
2014/07/28 PHP
Yii配置与使用memcached缓存的方法
2016/07/13 PHP
浅谈PHP正则中的捕获组与非捕获组
2016/07/18 PHP
PHP简单装饰器模式实现与用法示例
2017/06/22 PHP
php 使用ActiveMQ发送消息,与处理消息操作示例
2020/02/23 PHP
jquery弹出关闭遮罩层实例
2013/08/06 Javascript
深入理解JavaScript是如何实现继承的
2013/12/12 Javascript
js实现键盘操作实现div的移动或改变的原理及代码
2014/06/23 Javascript
javascript时间函数大全
2014/06/30 Javascript
js从Cookies里面取值的简单实现
2014/06/30 Javascript
jQuery使用Selectator插件实现多选下拉列表过滤框(附源码下载)
2016/04/08 Javascript
js事件源window.event.srcElement兼容性写法(详解)
2016/11/25 Javascript
微信小程序实现的日期午别医生排班表功能示例
2019/01/09 Javascript
Vue 实现分页与输入框关键字筛选功能
2020/01/02 Javascript
Javascript实现鼠标移入方向感知
2020/06/24 Javascript
JS实现京东商品分类侧边栏
2020/12/11 Javascript
[04:52]2015国际邀请赛LGD战队晋级之路
2015/08/14 DOTA
[58:46]OG vs NAVI 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python简单格式化时间的方法【strftime函数】
2016/09/18 Python
在PyCharm中三步完成PyPy解释器的配置的方法
2018/10/29 Python
Python使用字典实现的简单记事本功能示例
2019/08/15 Python
Python实现自定义读写分离代码实例
2019/11/16 Python
python  ceiling divide 除法向上取整(或小数向上取整)的实例
2019/12/27 Python
基于python实现复制文件并重命名
2020/09/16 Python
Django数据库迁移常见使用方法
2020/11/12 Python
CSS3实现菜单悬停效果
2020/11/17 HTML / CSS
Debenhams百货英国官方网站:Debenhams UK
2016/07/12 全球购物
小学生安全演讲稿
2014/04/25 职场文书
植物生产学专业求职信
2014/08/08 职场文书
2014年业务员工作总结范文
2014/11/17 职场文书
英语导游词
2015/02/13 职场文书
2015年教师自我评价范文
2015/03/04 职场文书
清明节文明祭祀倡议书
2015/04/28 职场文书
车位出租协议书范本
2016/03/19 职场文书
Apache Linkis 中间件架构及快速安装步骤
2022/03/16 Servers