计算机浮点计算异常

我们都知道,1.2-1.0=0.2,这是小学的小数点运算就学过了的

然而,公认比人脑计算能力更强的计算机在这个人人都会的小数计算上却总是‘计算错误’:

 这却是为什么呢?

实际上,这是由计算机内部的存储限制所决定的。与现实世界已经习以为常的十进制计算不同,计算机内部往往是以二进制,即以0和1为基本单元,承担起存储及计算等重要功能。至于为什么要用二进制而不用十进制,感兴趣的可以另外了解,在这里只需要知道,由于计算机以二进制存储,部分十进制数无法被精确显示,只能用近似值取代,1.2在计算中的实际形式表示为:1.0011001100110011001100110011001100110011001100110011,转换为十进制就是:1.1999999999999999555910790149937383830547332763671875

这是不可避免的运算误差,目前只能在代码编写过程中多注意到这一点,能使用整数运算的情况下尽量避免使用浮点运算,而在浮点运算时,需要确保这种程度的精度丢失不会造成严重后果

参考资料:

https://www.geeksforgeeks.org/floating-point-error-in-python/#:~:text=It's%20a%20problem%20caused%20when,leads%20to%20small%20roundoff%20errors.

原文地址:https://www.cnblogs.com/J14nWe1/p/14440437.html