zoukankan      html  css  js  c++  java
  • python浮点数精度问题

    python浮点数的计算,结果并不像我们想象的那样,比如:

    >>> 0.25+0.25-0.4
    0.09999999999999998

    >>> 0.6+0.3-0.26
    0.6399999999999999

    在计算机上面运算的结果是我们实际期望的结果并不一致,导致这样的根本原因就是: 计算机 十进制与二进制之间的转换

    计算机只认识二进制,十进制之间的运算,需要将十进制转换为二进制在进行二进制之间的运算


    python中有两种方法可以解决浮点数精度问题

    第一种: 使用decimal模块

    >>> import decimal

    >>> a= decimal.Decimal('0.25')

    >>> b= decimal.Decimal('0.25')
    >>> c= decimal.Decimal('0.4')
    >>> print(a+b-c)
    0.10

    可以看到,相比普通运算的结果,使用 decimal 模块得到的结果更精确。

    第二种: fractions 模块

    >>> from fractions import Fraction
    >>> 10/3
    3.3333333333333335
    >>> print(Fraction(10,3))
    10/3

    可以看出,通过 fractions 模块能很好地解决浮点类型数之间运算的问题

  • 相关阅读:
    MOSS工作流开发+ Email提醒
    使用VS.net開發MOSS工作流(請假單)
    配置单一登录
    使用VS.NET手動創建一個MOSS的BDC實體
    UDDI&wsdl
    telnet
    thoughtworks~
    GIS
    MySQL中修改root密码的方法[转]
    libconfig
  • 原文地址:https://www.cnblogs.com/ioan/p/13962659.html
Copyright © 2011-2022 走看看