Python中的浮点数原理与运算分析
2023-09-14 09:00:13 时间
本文实例讲述了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中sort和sorted函数代码解析
- Python 字符串_python 字符串截取_python 字符串替换_python 字符串连接
- python print 打印的数据包含中文,打印报错UnicodeDecodeError: 'gbk' codec can't decode bytes in position 459-460: illegal multibyte sequence解决办法
- Centos 6.4 安装Python 2.7 python-pip
- Python实现的选择排序算法原理与用法实例分析
- Atitit nlp自然语言处理类库(java python nodejs c#net) 目录 1.1. Python snownlp1 1.2. NLP.js一个nodejs/javascri
- 免费蹭WiFi,Python实现!
- Python编程语言学习:基于python各种库(matplotlib、Image)利用多种方法展示图片或进行图片可视化之详细攻略
- Python编程语言学习:python语言中快速查询python自带模块&函数的用法及其属性方法、如何查询某个函数&关键词的用法、输出一个类或者实例化对象的所有属性和方法名之详细攻略
- Python编程语言学习:python编程语言中重要函数讲解之map函数等简介、使用方法之详细攻略
- Python:python语言中与时间有关的库函数简介、安装、使用方法(获取当前时间/计算程序块前后运行时间/模型训练时间或耗费时间)之详细攻略
- Python之tkinter:动态演示调用python库的tkinter带你进入GUI世界(Find/undo事件)
- Python语言学习之字符串那些事:python和字符串的使用方法之详细攻略
- Python之ffmpeg-python:ffmpeg-python库的简介、安装、使用方法之详细攻略
- Py之pyglet:Python之pyglet库的简介、安装、使用详细攻略
- Python:利用python代码编程实现将视频的avi格式转换为MP4格式
- 已解决2. Set PROTOCOL_BUPFERS_PYTHON_iMPLEMENTATION=python (but this will use pure-Python parsing and w
- 基于知识图谱的自主作业插秧机任务规划研究(Python代码实现)
- 从零开始学习python | 实例讲解如何制作Python模式程序
- Android手机打造你的Python&Java开发工具!
- 【阶段三】Python机器学习25篇:机器学习项目实战:LigthGBM算法的核心思想、原理与LightGBM分类模型
- 【阶段一】Python快速入门03篇:数据结构-元组、字典与集合
- Python学习57:文件读写
- 【LeetCode Python实现】937. 重新排列日志文件(简单)
- Python编程:腾讯防水墙原理浅析与Flask结合测试
- 本来学的Java、python...没学好都转了软件测试,丢人吗!测试如何工资过万?
- python基础===继承和多继承
- 【异常】前端ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.
- 〖Python自动化办公篇㉑〗- python实现邮件自动化 - 定时发送邮件