道理很简单,123.123用二进制表示,是无法精确表示的。它等于1111011.00011111011111001110110110010001011010000111011011001000101101000011101...所以,用double表示,只能表示为一个近似数,当你将这个数再做了很多四则运算以后,这个误差就会放大。最后的结果就有微小的误差。
底层精度问题,你输入5.123.把每个a打出来看看