#include "stdio.h" void main() { double x; scanf("%f",&x); printf("%f",x); }

为什么我输入1.0000后的运行结果是0.000000?

float x;
scanf("%f",&x);
printf("%f",x);

x定义改下
或者:
double x;
scanf("%lf",&x);
printf("%lf",x);
是%lf 输入双精度数要这样追问

谢谢你的回答,不过我还想问的是我以单精度输入后以双精度存储再以单精度输出的结果为什么会把它的值都改变,由双到单不是只去尾数吗?能帮我再解答下吗?麻烦了

追答

你注意看下:
void main()
{ double x;
scanf("%f",&x);
printf("%f",x);
while(1);
}
结果:
输入1
输出 -92559604281615349000000000000000000000000000000000000000000000.000000
输入 2
输出 -92559604377396321000000000000000000000000000000000000000000000.000000


再看下十六进制的结果:
unsigned double x;
scanf("%f",&x);
printf("%x",x);

输入1 输出 3f800000 输入2 输出 40000000

追问

也就是他是一个随机数?是不是还跟编译器有关,我的没显示0.000000之前那部分。你太热心了,非常感谢!

追答

对 ,应该是格式不对,存储时内存出现混乱罢了,所以注意输入的格式

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-03-12
scanf("%lf,&x");printf("%.4f,&x");return 0;
相似回答