Python中的指数幂精度



我想知道为什么Python中的5*10**-6 == 0.000005false,但5*10**-3==0.005true。有没有更精确的方法来改变一个数字的幂?

我期望5*10**-6 == 0.000005为真

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

最新更新