关于一个小C语言程序,结果弄不明白,求分析,谢谢!
mai(){floatx,y;x=1.23456789e10;y=x+10printf("x=%f\ny=%f",x,y);}为什么结果是:x=12345678848.0...
mai()
{
float x,y;
x=1.23456789e10;
y=x+10
printf("x=%f\ny=%f",x,y);
}
为什么结果是:x=12345678848.000000
y=12345678848.000000
不明白这个848从哪来 展开
{
float x,y;
x=1.23456789e10;
y=x+10
printf("x=%f\ny=%f",x,y);
}
为什么结果是:x=12345678848.000000
y=12345678848.000000
不明白这个848从哪来 展开
展开全部
我也是初学的,你应该写错了。源代码为
#include<stdio.h>
main()
{
float x,y;
x=1.23456789e10;
y=x+10;
printf("x=%f\ny=%f\n",x,y);
return 0;
}
结果为x=12345678848
y=12345678858
出错的原因是float型只精确到小数点后6位,所以,你开始的x=1.23456789E10,计算机只能精确到“7”,后面的是系统随机上的,故出来了8848,有加上10 ,y就是12345678858了
#include<stdio.h>
main()
{
float x,y;
x=1.23456789e10;
y=x+10;
printf("x=%f\ny=%f\n",x,y);
return 0;
}
结果为x=12345678848
y=12345678858
出错的原因是float型只精确到小数点后6位,所以,你开始的x=1.23456789E10,计算机只能精确到“7”,后面的是系统随机上的,故出来了8848,有加上10 ,y就是12345678858了
展开全部
根据我的计算vc
float的范围
是使用26位尾数,6位指数
26位尾数中
有一个符号位
也就是最大的数是+/-(2^25-1)*(+/-2^5-1)
你这个的结果已经超过了这个范围了.所以后面的不精确了,而且浮点数本来就不精确的.不像整数那样,说是几就是几的
比如3在浮点数是可能是2.99999999,这个样子的
float的范围
是使用26位尾数,6位指数
26位尾数中
有一个符号位
也就是最大的数是+/-(2^25-1)*(+/-2^5-1)
你这个的结果已经超过了这个范围了.所以后面的不精确了,而且浮点数本来就不精确的.不像整数那样,说是几就是几的
比如3在浮点数是可能是2.99999999,这个样子的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-02-20
展开全部
结果溢出,所以出错
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询