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 k-近邻算法实例分享
Jun 11 Python
Python守护进程(daemon)代码实例
Mar 06 Python
Python输出9*9乘法表的方法
May 25 Python
Python设计模式中单例模式的实现及在Tornado中的应用
Mar 02 Python
python读取oracle函数返回值
Jul 18 Python
分享几道你可能遇到的python面试题
Jul 24 Python
Python实现的科学计算器功能示例
Aug 04 Python
Python3实现发送QQ邮件功能(附件)
Dec 23 Python
python使用opencv按一定间隔截取视频帧
Mar 06 Python
基于python实现高速视频传输程序
May 05 Python
解决Keyerror ''acc'' KeyError: ''val_acc''问题
Jun 18 Python
PyTorch: Softmax多分类实战操作
Jul 07 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提示Call-time pass-by-reference has been deprecated in的解决方法[已测]
2012/05/06 PHP
PHP中的类型约束介绍
2015/05/11 PHP
PHP实现根据图片色界在不同位置加水印的方法
2015/08/08 PHP
php set_include_path函数设置 include_path 配置选项
2016/10/30 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
jQuery第三课 修改元素属性及内容的代码
2010/03/14 Javascript
基于jquery插件制作左右按钮与标题文字图片切换效果
2013/11/07 Javascript
Javascript基础教程之定义和调用函数
2015/01/18 Javascript
JavaScript SHA512加密算法详细代码
2016/10/06 Javascript
JS版微信6.0分享接口用法分析
2016/10/13 Javascript
JavaScript中Array对象用法实例总结
2016/11/29 Javascript
bootstrap快速制作后台界面
2016/12/05 Javascript
JS正则表达式验证中文字符
2017/05/08 Javascript
angular bootstrap timepicker TypeError提示怎么办
2017/06/13 Javascript
JavaScript取得gridview中获取checkbox选中的值
2017/07/24 Javascript
vue-cli项目如何使用vue-resource获取本地的json数据(模拟服务端返回数据)
2017/08/04 Javascript
vue实现文字加密功能
2019/09/27 Javascript
Vue表单控件数据绑定方法详解
2020/02/05 Javascript
js实现登录时记住密码的方法分析
2020/04/05 Javascript
JavaScript代码实现简单计算器
2020/12/27 Javascript
利用Python批量提取Win10锁屏壁纸实战教程
2018/03/27 Python
uwsgi+nginx部署Django项目操作示例
2018/12/04 Python
Python并发:多线程与多进程的详解
2019/01/24 Python
python3中numpy函数tile的用法详解
2019/12/04 Python
python3通过udp实现组播数据的发送和接收操作
2020/05/05 Python
python实现简单的tcp 文件下载
2020/09/16 Python
如何使用python自带IDLE的几种方法
2020/10/10 Python
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
总经理文秘岗位职责
2014/02/03 职场文书
鼓励运动员的广播稿
2014/02/08 职场文书
2014年大学生四年规划书范文
2014/04/03 职场文书
我的中国梦演讲稿小学篇
2014/08/19 职场文书
《中国梦我的梦》中学生演讲稿
2014/08/20 职场文书
建筑安全员岗位职责
2015/02/15 职场文书
出国留学自荐信模板
2015/03/06 职场文书
超市收银员岗位职责
2015/04/07 职场文书