Python中的浮点数如何计算?

图片[1]-Python中的浮点数如何计算?-uusu优素-乐高,模型,3d打印,编程

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
>>>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
>>>
原文来自:https://www.py.cn
© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容