我想知道为什么Python中的5*10**-6 == 0.000005
是false
,但5*10**-3==0.005
是true
。有没有更精确的方法来改变一个数字的幂?
我期望5*10**-6 == 0.000005为真
这个问题是关于浮点数的一个众所周知的问题,称为浮点舍入误差。因为某些值必须以以2为基数的循环小数表示,浮点数就是以2为基数存储的,所以必须以一定的精度进行舍入。这就是为什么如果你在python控制台中输入5*10**-6
,它会返回给你:4.9999999999999996e-06
。不幸的是,这是浮点数的本质,但是,如果您确实希望这样的情况直观地工作,您可能需要考虑标准库中的decimal
模块,可以在这里找到该模块的文档。