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多线程(python多线程简明教程)
Jun 09 Python
python中MySQLdb模块用法实例
Nov 10 Python
python使用wmi模块获取windows下的系统信息 监控系统
Oct 27 Python
Python基于回溯法子集树模板解决0-1背包问题实例
Sep 02 Python
详解Django中间件执行顺序
Jul 16 Python
django最快程序开发流程详解
Jul 19 Python
numpy 声明空数组详解
Dec 05 Python
Python TCPServer 多线程多客户端通信的实现
Dec 31 Python
解决pytorch报错:AssertionError: Invalid device id的问题
Jan 10 Python
Mac PyCharm中的.gitignore 安装设置教程
Apr 16 Python
python中判断数字是否为质数的实例讲解
Dec 06 Python
Python如何实现感知器的逻辑电路
Dec 25 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
法国:浪漫之都的咖啡文化
2021/03/03 咖啡文化
php数组索引的Key加引号和不加引号的区别
2014/08/19 PHP
PHP中echo,print_r与var_dump区别分析
2014/09/29 PHP
PHP实用函数分享之去除多余的0
2015/02/06 PHP
Javascript 获取滚动条位置等信息的函数
2009/09/08 Javascript
Yii-自定义删除确认弹框(zyd)jquery实现代码
2013/03/04 Javascript
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
javascript setinterval 的正确语法如何书写
2014/06/17 Javascript
js实现带有介绍的Select列表菜单实例
2015/08/18 Javascript
jquery中val()方法是从最后一个选项往前读取的
2015/09/06 Javascript
uploadify多文件上传参数设置技巧
2015/11/16 Javascript
老生常谈遮罩层 滚动条的问题
2016/04/29 Javascript
基于jQuery.validate及Bootstrap的tooltip开发气泡样式的表单校验组件思路详解
2016/07/18 Javascript
深入理解AngularJS中的ng-bind-html指令和$sce服务
2016/09/08 Javascript
JavaScript动态检验密码强度的实现方法
2016/11/09 Javascript
Bootstrap Img 图片样式(推荐)
2016/12/13 Javascript
微信小程序实现点击按钮修改文字大小功能【附demo源码下载】
2017/12/06 Javascript
angular4强制刷新视图的方法
2018/10/09 Javascript
axios异步提交表单数据的几种方法
2019/08/11 Javascript
浅谈vuex的基本用法和mapaction传值问题
2019/11/08 Javascript
基于Vue.js+Nuxt开发自定义弹出层组件
2020/10/09 Javascript
Python编程实现的简单神经网络算法示例
2018/01/26 Python
Python将图片转换为字符画的方法
2020/06/16 Python
python获取网页中所有图片并筛选指定分辨率的方法
2018/03/31 Python
python实现排序算法解析
2018/09/08 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
python将视频转换为全字符视频
2019/04/26 Python
css3实现图片遮罩效果鼠标hover以后出现文字
2013/11/05 HTML / CSS
H5 meta小结(前端必看篇)
2016/08/24 HTML / CSS
Lookfantastic西班牙官网:英国知名美妆购物网站
2018/06/13 全球购物
在线实验室测试:HealthLabs.com
2020/05/03 全球购物
公司员工的自我评价范例
2013/11/01 职场文书
融资租赁计划书
2014/04/29 职场文书
国际语言毕业生求职信
2014/07/08 职场文书
工作试用期自我评价
2015/03/10 职场文书
用python开发一款操作MySQL的小工具
2021/05/12 Python