Python中的浮点数原理与运算分析

 更新时间:2017年10月12日 10:10:44   作者:Inside_Zhang  
这篇文章主要介绍了Python中的浮点数原理与运算分析,结合实例形式分析了Python浮点数操作的常见错误,并简单解释了浮点数运算的原理与比较运算实现方法,需要的朋友可以参考下

本文实例讲述了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文件与目录操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • 解决python中使用PYQT时中文乱码问题

    解决python中使用PYQT时中文乱码问题

    今天小编就为大家分享一篇解决python中使用PYQT时中文乱码问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Python学习之面向对象编程详解

    Python学习之面向对象编程详解

    利用(面向)对象的(属性和方法)去进行编码的过程即面向对象编程。本文将通过示例详细为大家介绍一下Python中的面向对象编程,需要的可以参考一下
    2022-03-03
  • PyCharm设置每行最大长度限制的方法

    PyCharm设置每行最大长度限制的方法

    今天小编就为大家分享一篇PyCharm设置每行最大长度限制的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • 零基础小白多久能学会python

    零基础小白多久能学会python

    在本篇文章里小编给大家分享的是一篇关于零基础学python要多久的相关文章内容,有兴趣的朋友们可以跟着学习下。
    2020-06-06
  • python3 flask使用连接池连接数据库实例

    python3 flask使用连接池连接数据库实例

    这篇文章主要为大家介绍了python3 flask使用连接池连接数据库实例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • Django models filter筛选条件详解

    Django models filter筛选条件详解

    这篇文章主要介绍了Django models filter筛选条件详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • 对Python中实现两个数的值交换的集中方法详解

    对Python中实现两个数的值交换的集中方法详解

    今天小编就为大家分享一篇对Python中实现两个数的值交换的集中方法详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python中常见的异常总结

    Python中常见的异常总结

    当 Python 检测到一个错误时,解释器就会指出当前流已经无法继续执行下去,这时候就出现了异常。
    2018-02-02
  • Python CNN卷积神经网络实战教程深入讲解

    Python CNN卷积神经网络实战教程深入讲解

    CNN,即卷积神经网络,主要用于图像识别,分类。由输入层,卷积层,池化层,全连接层(Affline层),Softmax层叠加而成。卷积神经网络中还有一个非常重要的结构:过滤器,它作用于层与层之间(卷积层与池化层),决定了怎样对数据进行卷积和池化
    2022-12-12
  • Python OpenCV中的图像处理物体跟踪效果

    Python OpenCV中的图像处理物体跟踪效果

    我们知道怎样将一幅图像从 BGR 转换到 HSV 了,我们可以利用这一点来提取带有某个特定颜色的物体,这篇文章主要介绍了Python OpenCV中的图像处理物体跟踪,需要的朋友可以参考下
    2023-08-08

最新评论