• 技术文章 >常见问题 >Python常见问题

    Python中的浮点数如何计算?

     Ly Ly2020-05-21 09:34:48原创3872

    1、浮点数的一个普遍的问题是它们不能精确的表示十进制数。

    1

    2

    3

    4

    5

    6

    >>> a = 4.2

    >>> b = 2.1

    >>> a + b

    6.300000000000001

    >>> (a + b) == 6.3

    False

    这是由于底层 CPU 和IEEE 754 标准通过自己的浮点单位去执行算术时的特征。看似有穷的小数, 在计算机的二进制表示里却是无穷的。

    一般情况下,这一点点的小误差是允许存在的。如果不能容忍这种误差(比如金融领域),那么就要考虑用一些途径来解决这个问题了。

    2、Decimal

    使用这个模块不会出现任何小误差。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    >>> from decimal import Decimal

    >>> a = Decimal('4.2')

    >>> b = Decimal('2.1')

    >>> a + b

    Decimal('6.3')

    >>> print(a + b)

    6.3

    >>> (a + b) == Decimal('6.3')

    True

    尽管代码看起来比较奇怪,使用字符串来表示数字,但是 Decimal 支持所有常用的数学运算。 decimal 模块允许你控制计算的每一方面,包括数字位数和四舍五入。在这样做之前,需要创建一个临时上下文环境来改变这种设定:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    >>> from decimal import Decimal, localcontext

    >>> a = Decimal('1.3')

    >>> b = Decimal('1.7')

    >>> print(a / b)

    0.7647058823529411764705882353

    >>> with localcontext() as ctx:

    ...  ctx.prec = 3

    ...  print(a / b)

    ...

    0.765

    >>> with localcontext() as ctx:

    ...  ctx.prec = 50

    ...  print(a / b)

    ...

    0.76470588235294117647058823529411764705882352941176

    >>>

    专题推荐:python
    上一篇:python怎么关闭应用程序? 下一篇:python怎么把光标移动到指定位置?

    相关文章推荐

    • python浮点数怎么写• python怎么输出浮点数• python画图怎么添加汉字的坐标轴• python2.7 numpy导入出错怎么解决• 怎么用python画表格?• 怎么用python创建一个函数?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网