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求pi的方法
Oct 08 Python
python模拟鼠标拖动操作的方法
Mar 11 Python
scrapy自定义pipeline类实现将采集数据保存到mongodb的方法
Apr 16 Python
python脚本内运行linux命令的方法
Jul 02 Python
python自动重试第三方包retrying模块的方法
Apr 24 Python
Python开启线程,在函数中开线程的实例
Feb 22 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
Jan 02 Python
利用setuptools打包python程序的方法步骤
Jan 18 Python
python实现引用其他路径包里面的模块
Mar 09 Python
Python logging模块原理解析及应用
Aug 13 Python
浅谈Python __init__.py的作用
Oct 28 Python
Python基于Socket实现简易多人聊天室的示例代码
Nov 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获取服务器信息的实现代码
2013/02/04 PHP
ThinkPHP 3.2 数据分页代码分享
2014/10/14 PHP
php实现的二叉树遍历算法示例
2017/06/15 PHP
PHP常用header头定义代码示例汇总
2020/08/29 PHP
ajax无刷新动态调用股票信息(改良版)
2008/11/01 Javascript
JQuery之拖拽插件实现代码
2011/04/14 Javascript
javascript中的数字与字符串相加实例分析
2011/08/14 Javascript
jQuery照片伸缩效果不影响其他元素的布局
2014/05/09 Javascript
javascript的push使用指南
2014/12/05 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
2016/01/29 Javascript
基于javascript制作微博发布栏效果
2016/04/04 Javascript
jQuery简易时光轴实现方法示例
2017/03/13 Javascript
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
2019/12/02 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
[01:59][TI9趣味视频] 全明星赛奖励
2019/08/23 DOTA
python解析xml文件实例分享
2013/12/04 Python
Python模糊查询本地文件夹去除文件后缀的实例(7行代码)
2017/11/09 Python
python中不能连接超时的问题及解决方法
2018/06/10 Python
pandas去重复行并分类汇总的实现方法
2019/01/29 Python
python判断文件是否存在,不存在就创建一个的实例
2019/02/18 Python
Python字符串匹配之6种方法的使用详解
2019/04/08 Python
python实现nao机器人身体躯干和腿部动作操作
2019/04/29 Python
解决Pytorch训练过程中loss不下降的问题
2020/01/02 Python
解决python父线程关闭后子线程不关闭问题
2020/04/25 Python
解决python中0x80072ee2错误的方法
2020/07/19 Python
德国购买健身器材:AsVIVA
2017/08/09 全球购物
Molly Bracken法国电子商店:法国女性时尚品牌
2019/07/24 全球购物
什么是跨站脚本攻击
2014/12/11 面试题
单位领导证婚词
2014/01/14 职场文书
学习礼仪心得体会
2014/09/01 职场文书
2014年十八届四中全会思想汇报范文
2014/10/17 职场文书
收费员岗位职责
2015/02/14 职场文书
python3读取文件指定行的三种方法
2021/05/24 Python
Node-Red实现MySQL数据库连接的方法
2021/08/07 MySQL
零基础学java之带参数以及返回值的方法
2022/04/10 Java/Android