关于C程格式输入与输出的问题

来源:百度知道 编辑:UC知道 时间:2024/06/28 06:07:44
在《C程序设计》第三版(谭浩强著)第79页有一个例题:
#include<stdio.h>
void main()
{
float x,y;
x=111111.111;
y=222222.222;
printf("%f\n",x+y);
}
运行结果为:3333333.328125
为什么运行结果不是333333.333,而是333333.328125,书上给出的解释是“显然只有前七位是有效数字,千万不要认为凡是计算机输出的数字都是准确的。双精度也可以用%f格式输出,它的有效数字一般是16位,给出小数6位。”也就是说后5位小数是计算机随即给出的,但是我把程序拿到不同的电脑上运行,却得到同样的结果333333.325125。请问这是为什么?谢谢!
那么请问为什么不能给出精确数字?

计算机只能进行离散运算,也就是说它实际上只能对整型进行计算,对浮点数的运算是先化成整型数再计算的,这里面就肯定有误差了
并不是随机的,而是根据具体的浮点算法得出的,也就是同一版本的c的结果一定是相同的,其他的比如vb,pascal之类的就不一定一样了