c语言问题,这两个程序都能在codeblocks中运行,但是我是用两种方法做的奇怪的是,运行结果不同,求大神

2025-03-27 20:29:54
推荐回答(1个)
回答1:

1.chanzhi = chanzhi*m;
2.n=(float)chanzhi*(1+m);
核心的差距在这里。在1中,会把产值从整数转小数乘以m,再变成整数!注意这里的忽略会造成很大误差!试试把chanzhi用float储存,看看结果,就一样了。虽然我看的不仔细,可能还有不同,但是浮点数转整数的误差累计,就是这里误差的关键。
计算机的精度可是大问题!当年美国就是由于精度不统一造成的累计误差,而让拦截导弹偏离了200km之远。。。