浮点运算误差


出现浮点小数运算误差的原因很简单,小数有无穷多个

甚至一个小数也有无穷多位,如十进制的1/3,或者二进制的0.1

所以计算机存储小数的时候,必定只能存储所有小数的一部分,而无穷小数则必须截断

因此,一个小数有时候就只能取一个接近值而不是精确值

而对应的浮点数运算,也只能得到接近值,而不是精确值

不同的CPU,比方说Intel的跟AMD的,或者奔腾跟赛扬,在硬件上对于截断的位置是不一样的

所以,同一个运算在不同的机器就可能有不同的结果

这也是为什么论坛经常有人说xx运算不正确,然后回帖的人说我的机器没事,其实就是CPU不同而已

另一方面,不同的软件,内部计算的时候,也许用了不同的CPU硬件实现的数据类型,或者精度设置也不一样,

所以,同一个运算在不同的软件也可能有不同的结果

你可能感兴趣的:(浮点)