Python中的浮点数如何计算?
发布时间:2026-03-11 22:05:27

1、浮点数的一个常见问题是,它们不能准确地表示十进制数。
>>>a=4.2 >>>b=2.1 >>>a+b 6.300000000000001 >>>(a+b)==6.3 False
这是因为底层 CPU 和IEEE 754 算术的特征是通过自己的浮点单位来执行的。看似贫穷的小数, 计算机二进制的表现是无限的。
一般来说,这个小错误是允许存在的。如果你不能容忍这个错误(比如金融),你应该考虑用一些方法来解决这个问题。
2、Decimal
使用此模块时不会出现小错误。
>>>fromdecimalimportDecimal
>>>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 该模块允许您控制计算的各个方面,包括数字位数和四舍五入。在此之前,需要创建一个临时的上下文环境来改变设置:
>>>fromdecimalimportDecimal,localcontext
>>>a=Decimal('1.3')
>>>b=Decimal('1.7')
>>>print(a/b)
0.7647058823529411764705882353
>>>withlocalcontext()asctx:
...ctx.prec=3
...print(a/b)
...
0.765
>>>withlocalcontext()asctx:
...ctx.prec=50
...print(a/b)
...
0.76470588235294117647058823529411764705882352941176
>>>
下一篇 python怎么关闭应用程序?
