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 多进程通信模块的简单实现
Feb 20 Python
Python实现批量把SVG格式转成png、pdf格式的代码分享
Aug 21 Python
Python中logging模块的用法实例
Sep 29 Python
在Linux下调试Python代码的各种方法
Apr 17 Python
Python的爬虫包Beautiful Soup中用正则表达式来搜索
Jan 20 Python
Python3学习urllib的使用方法示例
Nov 29 Python
Python数据抓取爬虫代理防封IP方法
Dec 23 Python
opencv 获取rtsp流媒体视频的实现方法
Aug 23 Python
tensorflow实现tensor中满足某一条件的数值取出组成新的tensor
Jan 04 Python
django处理select下拉表单实例(从model到前端到post到form)
Mar 13 Python
浅谈Python中os模块及shutil模块的常规操作
Apr 03 Python
Python监听键盘和鼠标事件的示例代码
Nov 18 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中一些可以替代正则表达式函数的字符串操作函数
2014/11/17 PHP
Javascript-Mozilla和IE中的一个函数直接量的问题
2007/01/09 Javascript
测试你的JS的掌握程度的代码
2009/12/09 Javascript
javascript两段代码,两个小技巧
2010/02/04 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
2014/06/23 Javascript
JavaScript常用的弹出广告及背投广告实现方法
2015/02/06 Javascript
超实用的JavaScript表单代码段
2016/02/26 Javascript
js闭包引起的事件注册问题介绍
2016/03/29 Javascript
JS获取html元素的标记名实现方法
2016/10/08 Javascript
nodeJs链接Mysql做增删改查的简单操作
2017/02/04 NodeJs
微信小程序表单验证错误提示效果
2017/05/19 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
详解使用angular的HttpClient搭配rxjs
2017/09/01 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
微信小程序使用request网络请求操作实例
2017/12/15 Javascript
angular2中Http请求原理与用法详解
2018/01/11 Javascript
vue计算属性computed的使用方法示例
2019/03/13 Javascript
微信小程序环境下将文件上传到OSS的方法步骤
2019/05/31 Javascript
python学习笔记之列表(list)与元组(tuple)详解
2017/11/23 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
python微信跳一跳游戏辅助代码解析
2018/01/29 Python
python中update的基本使用方法详解
2019/07/17 Python
Python模拟登入的N种方式(建议收藏)
2020/05/31 Python
Python更改pip镜像源的方法示例
2020/12/01 Python
德国baby-markt婴儿用品瑞士网站:baby-markt.ch
2017/06/09 全球购物
英国高档百货连锁店:John Lewis
2017/11/20 全球购物
TripAdvisor印尼站:全球领先的旅游网站
2018/03/15 全球购物
中专毕业个人的自荐信格式
2013/09/21 职场文书
班长自荐书范文
2014/02/11 职场文书
警校毕业生自我评价
2014/04/06 职场文书
爱情寄语大全
2014/04/09 职场文书
法律专业大学生职业生涯规划书:向目标一步步迈进
2014/09/22 职场文书
关于童年的读书笔记
2015/06/26 职场文书
2019学子的答谢词范本!
2019/07/05 职场文书
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL
Pytorch中expand()的使用(扩展某个维度)
2022/07/15 Python