我们在使用浮点数进行计算时会发现一些运算的结果和我们想的不一样
例如
a=5.6
b=1.6
print(a-b)
print(a+b)
我们直接口算出结果应该为4.0和7.2,但是在编译器中运行后的结果为
3.9999999999999996
7.199999999999999
不过也并不是所有的浮点数都不准确
例如
a=5.5
b=1.5
print(a-b)
print(a+b)
这样计算就可以输出正确的结果
4.0
7.0
当我第一次遇到这种情况,还不明白出现了什么问题时,觉得这python真拉啊,入错坑了,其实并不是,出现这个问题和python没有关系,这是计算机内部存储数据出现的问题,学过计算机组成原理的都应该知道,计算机是以二进制存储所有的数据的。浮点数是以IEEE-754浮点运算标准表示的,共包含53位精度。
0.1在计算中的存储为
0.12=0.2->0
0.22=0.4->0
0.42=0.8->0
0.82=1.6->1
0.62=1.2->1
0.22=0.4->0
…………
0.000110001100011……
是一个无限循环小数这样就会造成误差
所以我们在写代码刷题时,如果遇到这种情况我们可以用round函数来使浮点数进行四舍五入运算,让其在小数点后六位甚至更后边进行四舍五入,我们就可以尽可能的避免了错误,可以AC。
如果我们在小数点后一两位四舍五入就会出现较大的错误
例如1.55555555555
如果在小数点后第一位用,就会直接让浮点数变为2.0,差距很大,不过在选择在第六位一般就不会出现这种错误。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)