0.1 + 0.2 != 0.3

>>> 2 + 3 == 5 
True
>>> 0.1 + 0.2 == 0.3
False

为什么会这样?

 如果是这样子,那么写判断条件的时候,是不是不会成立?
后来结合了计算机进行运算的原理,它是先把十进制转化为二进制,再进行运算,因为计算机只认识0和1。我们知道,一个整数必然对应一个二进制,它的运算结果是准确的。而对于浮点数在转化为二进制的时候会做近似处理,此时便会产生误差。所以实际上0.1 + 0.2运算结果是一个无限趋近于0.3的数。
那么,如果我就要返回True呢?只需要统一精度。

>>> round(0.1 + 0.2,1) == 0.3
True

   所以,0.1 + 0.2 == 0.3 吗,这是个值得思考的问题!!!

   所以,浮点数之间慎用大小判断

猜你喜欢

转载自www.cnblogs.com/jielearscoding/p/12509734.html