知行编程网知行编程网  2022-11-26 11:00 知行编程网 隐藏边栏  31 
文章评分 0 次,平均分 0.0
导语: 本文主要介绍了关于Python中的浮点数如何计算?的相关知识,包括机器中的浮点数是,以及Python 浮点数这些编程知识,希望对大家有参考作用。

Python 中的浮点数是如何计算的?

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

>>> a = 4.2
>>> b = 2.1
>>> a + b
6.300000000000001
>>> (a + b) == 6.3
False

这是由于底层 CPU 的性质和通过其自身的浮点单元执行算术的 IEEE 754 标准。看似有限的小数在计算机的二进制表示中是无限的。

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


2、Decimal

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

>>> 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 模块允许你控制计算的各个方面,包括数字和舍入。在这样做之前,需要创建一个临时上下文来更改此设置:

>>> 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
>>>

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写
扫一扫二维码分享