浮点数计算 0.1+0.2 ≠ 0.3

相关网站:

1.原因

科学计数法的二进制版本,类似于十进制中表示 1/3 是无限循环小数,0.1 在二进制中是无限循环小数,无法精确表示

为什么使用浮点数,其中关键一点就是计算速度快且占用内存空间小。

2.如何注意和规避

对于浮点数不能直接判断是否相等,而应该以它们的差值小于某个小值作为判断:

0.1 + 0.2 == 0.3 # 判断方法是不可靠的
# 推荐方法
a = 0.1 + 0.2
b = 0.3
abs(a - b) < 1e-6

可以使用 decimal (十进制定点数),表示任意精度的十进制数。

from decimal import Decimal
Decimal('0.1')+Decimal('0.2')
posted @ 2023-05-13 13:15  若澧风  阅读(11)  评论(0编辑  收藏  举报