是的,浮点数在运算过程中并没有保证完全精确,是什么原因导致了这种现象呢?浮点数在计算机硬件中以二进制的形式存在,但是我们现在看到的都是十进制,而十进制的浮点数不能都完全精确的表示为二进制小数。在二进制下,1/10 是一个无限循环小数:0.00011001100110011…,显然这样的表示形式无法精确的表示浮点数,最终的结果是近似 1/10 。有朋友提出四舍五入可以解决。四舍五入进行解决在 python 中,使用 round 来进行四舍五入,其中 ndigits 表示保留几位小数,默认为0。按照四舍五入的话,round会直接进为1.2,但是此时并没有,而是变为了1.1。如果没有上面对浮点数的了解,仅从表象上很难去解释。但是接下来,可能会更加的困惑,因为对于 0.5 来说,是完全可以直接转为二进制表示的。

聊聊Python中的浮点数运算不准确问题

聊聊Python中的浮点数运算不准确问题

聊聊Python中的浮点数运算不准确问题

聊聊Python中的浮点数运算不准确问题