导语:
本文主要介绍了关于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
>>>
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 如何调试python3.711/22
- ♥ 为什么python要安装到c盘?10/22
- ♥ python字典get()实例教程详解10/15
- ♥ 在哪里打开python09/06
- ♥ python如何看待变量属性11/11
- ♥ python如何从字符串中删除不可见字符(\x00)08/22
内容反馈