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 实现购物商城,含有用户入口和商家入口的示例
Sep 15 Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
Mar 22 Python
Pycharm 操作Django Model的简单运用方法
May 23 Python
用Python编写一个高效的端口扫描器的方法
Dec 20 Python
Django 源码WSGI剖析过程详解
Aug 05 Python
用python写测试数据文件过程解析
Sep 25 Python
Python读取csv文件实例解析
Dec 30 Python
TensorFlow Saver:保存和读取模型参数.ckpt实例
Feb 10 Python
在脚本中单独使用django的ORM模型详解
Apr 01 Python
Python建造者模式案例运行原理解析
Jun 29 Python
python else语句在循环中的运用详解
Jul 06 Python
python爬虫之利用selenium模块自动登录CSDN
Apr 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
攻克CakePHP系列一 连接MySQL数据库
2008/10/22 PHP
查找php配置文件php.ini所在路径的二种方法
2014/05/26 PHP
php通过两层过滤获取留言内容的方法
2016/07/11 PHP
php使用json_decode后数字对象转换成了科学计数法的解决方法
2017/02/20 PHP
PHP CURL中传递cookie的方法步骤
2019/05/09 PHP
javascript实现的鼠标链接提示效果生成器代码
2007/06/28 Javascript
基于jquery的地址栏射击游戏代码
2011/03/10 Javascript
JavaScript学习笔记(一) js基本语法
2011/10/25 Javascript
javascript检测浏览器的缩放状态实现代码
2014/09/28 Javascript
jQuery oLoader实现的加载图片和页面效果
2015/03/14 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
使用bootstrapValidator插件进行动态添加表单元素并校验
2016/09/28 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
2017/02/13 Javascript
js使用generator函数同步执行ajax任务
2017/09/05 Javascript
Vue.js 的移动端组件库mint-ui实现无限滚动加载更多的方法
2017/12/23 Javascript
在vue项目中使用sass的配置方法
2018/03/20 Javascript
微信小程序支付功能 php后台对接完整代码分享
2018/06/12 Javascript
node.js读取Excel数据(下载图片)的方法示例
2018/08/02 Javascript
基于element-ui的rules中正则表达式
2018/09/04 Javascript
iphone刘海屏页面适配方法
2019/05/07 Javascript
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
2017/07/25 Python
Python设计模式之代理模式简单示例
2018/01/09 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
2018/09/17 Python
python实现五子棋小游戏
2020/03/25 Python
Python中psutil的介绍与用法
2019/05/02 Python
Python正则表达式如何匹配中文
2020/05/27 Python
python模拟点击玩游戏的实例讲解
2020/11/26 Python
世界上最大的在线学习和教学市场:Udemy
2017/11/08 全球购物
尤为Wconcept中国官网:韩国设计师品牌服饰
2019/01/10 全球购物
合同专员岗位职责
2013/12/18 职场文书
安全宣传标语口号
2014/06/06 职场文书
临时用工协议书范本
2014/10/29 职场文书
2015年初中生自我评价范文
2015/03/03 职场文书
就业导师推荐信范文
2015/03/27 职场文书
成品仓库管理员岗位职责
2015/04/09 职场文书
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技