求助,C程序设计 p38 例3.2

图片说明

大佬们,如图所示,输出的结果在书本上的例题是
p1=1003.599976
p2=1022.500000
p3=1019.898010
自己稍微检查了几遍,好像没有出错?
不过还是希望大佬能够来讲解一下为什么会出现这种情况

这个是精度丢失问题,具体的原理建议可以了解下IEEE754标准,不仅是c,所有用这个标准的编程语言在计算浮点数时,都有精度丢失问题。你可以用下面这种方法减小误差,这样就会得到你上面说的书本中的结果。图片说明

float是精度是7位小数,在计算机中是近似存储的,调试查看到r2是0.0024999...,乘积出来的结果就如程序窗口里那样。
相信实证,不唯书。