C语言 浮点型数据的精确度问题!

来源:百度知道 编辑:UC知道 时间:2024/05/21 08:27:09
程序是这样的:
#include "stdio.h"
main()
{float f;double y;int i;
x=0.0;y=0.0;i=1;
while(i<=10000)
{
x=x+100000.0;y=y+100000.0;i-i+1;
}
x=x/10000.0;y=y/10000.0;
printf("x=%f,y=%f\n",x,y);
}
运行结果为:x=99985.179688,y=100000.000000
我想问的就是,float型数据不是精确到7位 而double型数据精确到17位
为什么这里输出12位数据?
我是说float 不是应该输出7位数字 而double 应该输出 17位数字吗?这里是12位

float型数据精确到六位小数!

double类型数据要以%lf格式输出。

尝试这个程序:

#include "stdio.h"
main()
{float x;double y;int i;
x=0.0;y=0.0;i=1;
while(i<=10000)
{
x=x+100000.0;y=y+100000.0;++i;
}
x=x/10000.0;y=y/10000.0*x;
y/=10000;
y/=1000;
printf("x=%f,y=%.20lf\n",x,y);
}