Python中的浮点数原理与运算分析
2023-09-14 08:58:52 时间
本文实例讲述了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计算
- python字符串转化列表_Python列表到字符串的转换[通俗易懂]
- python jieba库_Python jieba库的使用说明「建议收藏」
- Python语法详解
- Python 技巧篇-pip卸载python库实例演示,查看pip命令大全方法[通俗易懂]
- 【说站】python字符串的多行输出
- 【说站】Python继承的原理分析
- python hexdump_笨办法学 Python · 续 练习 26:`hexdump`
- Python win32api_python api文档
- pycharm如何调试python程序_Pycharm断点调试Python程序的步骤方法
- 接口测试第2讲:Python测试框架——unittest
- Python 自动化指南(繁琐工作自动化)第二版:附录 B:运行程序
- Python面向对象编程-上下文管理器
- python-数据库编程-如何在Python中连接到数据库
- python-Python与MySQL数据库-使用Python执行MySQL查询
- python-Python与SQLite数据库-SQLite数据库的基本知识(二)
- python-Python与PostgreSQL数据库-处理PostgreSQL查询结果
- Python for循环及用法详解
- Linux中运行Python文件的步骤(linux运行python文件)
- 在Linux上搭建Python开发环境(linux搭建python环境)
- Python入门篇之字符串