|
这都很正常呀。
因为计算机是二进制。
第一个问题:
如果你不太能理解二进制和十进制的实数转换。那么你可以想象一下三进制和十进制的转换。
1/3 对三进制( 0.1(3) )来说,是整的1位小数。但是对十进制来说,就是无限(循环)小数。
所以,计算机里采用二进制,双精度取了52位小数,所以是 log10(2^52)= 15.653 位有效数字。
计算机内部是只取了52位二进制小数的,只是转换成十进制显示的时候,多余的数字出现了。
第二个问题:
不同的优化算法下,相同的计算由于第53位或者更低的位数下的影响。浮点数计算会有舍入误差。
这也是很正常的事情。
这个问题的细节,你恐怕要去看CPU方面的手册了。 |
|