这是因为计算机保存浮点数时,是把数看作a*(2^b)这样的形式的,而不是我们直观上认为的以10为底数,在计算机内部处理时是以2为底数的,即将数转换成以2为底的“科学计数法”的形式,再由这个形式反转换成10进制形式,但是由于数据有位数的限制,所以有些数转换成二进制计数形式后位数超出了限制的位数,那么超出的位就被截去了,那么转换回来时得到的数就会与原数有偏差,不同的数这个偏差是不同的。p2与p3算式在人算的角度下是一样的,但让计算机去算时就不一定了。
bj与中间的乘数第一次相乘 * 后得到数值valuetmp,计算机进行精度的截取所以结果不同,不过这种偏差很小,我们一般忽略。但我们人去算,不会在第一次相乘得到valuetmp后进行精度截取,所以我们算结果一样。
计算机不会认为1=1的,1=0.999999999999999999999 无限接近于1,毕竟是二进制的。
bj与中间的乘数第一次相乘 * 后得到数值valuetmp,计算机进行精度的截取所以结果不同,不过这种偏差很小,我们一般忽略。但我们人去算,不会在第一次相乘得到valuetmp后进行精度截取,所以我们算结果一样。
这就涉及到数值的精度问题