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 中文字符串的处理实现代码
Oct 25 Python
python写的一个文本编辑器
Jan 23 Python
Python多线程爬虫简单示例
Mar 04 Python
Python脚本实现Web漏洞扫描工具
Oct 25 Python
分数霸榜! python助你微信跳一跳拿高分
Jan 08 Python
python复制文件到指定目录的实例
Apr 27 Python
浅析Python装饰器以及装饰器模式
May 28 Python
Python搭建Spark分布式集群环境
Jul 05 Python
Python如何telnet到网络设备
Feb 18 Python
Pytest实现setup和teardown的详细使用详解
Apr 17 Python
关于Numpy之repeat、tile的用法总结
Jun 02 Python
基于Python实现一个春节倒计时脚本
Jan 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
中国收音机工业发展史
2021/03/02 无线电
Fatal error: session_start(): Failed to initialize storage module: files问题解决方法
2014/05/04 PHP
PHP中file_get_contents高?用法实例
2014/09/24 PHP
遍历指定目录,并存储目录内所有文件属性信息的php代码
2016/10/28 PHP
PHP 文件锁与进程锁的使用示例
2017/08/07 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
2019/06/13 PHP
JS中window.open全屏命令解析及使用示例
2013/12/11 Javascript
jQuery幻灯片带缩略图轮播效果代码分享
2015/08/17 Javascript
使用AJAX实现Web页面进度条的实例分享
2016/05/06 Javascript
jQuery简单实现iframe的高度根据页面内容自适应的方法
2016/08/01 Javascript
BootStrap轻松实现微信页面开发代码分享
2016/10/21 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
2017/03/01 Javascript
关于axios返回空对象的问题解决
2017/04/04 Javascript
了解VUE的render函数的使用
2017/06/08 Javascript
Vue中的slot使用插槽分发内容的方法
2018/03/01 Javascript
vue项目出现页面空白的解决方案
2019/10/31 Javascript
Js实现粘贴上传图片的原理及示例
2020/12/09 Javascript
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
[40:53]完美世界DOTA2联赛PWL S3 Magma vs DLG 第二场 12.18
2020/12/20 DOTA
Python实现自动添加脚本头信息的示例代码
2016/09/02 Python
python+selenium打印当前页面的titl和url方法
2018/06/22 Python
解决pycharm回车之后不能换行或不能缩进的问题
2019/01/16 Python
实例讲解Python脚本成为Windows中运行的exe文件
2019/01/24 Python
python使用requests.session模拟登录
2019/08/09 Python
django实现模型字段动态choice的操作
2020/04/01 Python
在python里创建一个任务(Task)实例
2020/04/25 Python
基于HTML5+tracking.js实现刷脸支付功能
2020/04/16 HTML / CSS
GUESS西班牙官方网上商城:美国服饰品牌
2017/03/15 全球购物
如何找出EMP表里面SALARY第N高的employee
2013/12/05 面试题
新浪微博实习心得体会
2014/01/27 职场文书
2014年社区庆元旦活动方案
2014/03/08 职场文书
三方股份合作协议书
2014/10/13 职场文书
病危通知书样本
2015/04/17 职场文书
新生开学寄语大全
2015/05/28 职场文书
详解Python+OpenCV进行基础的图像操作
2022/02/15 Python
python缺失值填充方法示例代码
2022/12/24 Python