在第三章中主要讲述了计算机进行小数运算时出错的原因,大家可能会认为“万能的计算机是不会出现计算错误的”。但实际上,依然存在程序运行后无法得到正确数值的情况。其中,小数运算就是一个典型的例子。在本章中我们首先了解了将二进制表示的小数转换成十进制的方法,这样便于理解计算机运算出错的原因,计算机之所以会出现运算错误,是因为“有一些十进制数的小数无法转换成二进制数”。例如,十进制数0.1,就无法用二进制数正确表示,小数点后面即使有几百位也无法表示。在计算机进行小数运算时无法正确表示的数值,最后都变成了近似值。计算机这个功能有限的机器设备,是无法处理无限循环的小数的。因此,在遇到循环小数时,计算机就会根据变量数据类型所对应的长度将数值从中间截断或者四舍五人。我们知道,将0.3333...这样的循环小数从中间截断会变成0.333333,这时它的3倍是无法得出1的(结果是
0.999999),计算机运算出错的原因也是同样的道理。因为计算机内部使用的是二进制数,所以基数自然就是2。因此,实际的数据中往往不考虑基数,只用符号、尾数、指数这三部分即可表示浮点数。也就是说,64位(双精度浮点数)和32 位(单精度浮点数)的数据,会被分为三部分来使用。那么我们如何避免计算机在计算小数时出现错误呢?1根据程序目的不同,无视错误2把小数转化成整数计算,采用BCD方法