c语言问题中int和float
main(){intn,t,number=20;floata=2,b=1,s=0;for(n=1;n<=number;n++){s=s+a/b;t=a,a=a+b,b=t...
main()
{
int n,t,number=20;
float a=2,b=1,s=0;
for(n=1;n<=number;n++)
{
s=s+a/b;
t=a,a=a+b,b=t;
}
printf("总和=%9.6f\n",s);
}
其结果是3.14。。。。
将上面的float a=2,b=1换成int a=2 b=1;其结果为20.0000000.。
为什么差别这么大(float 跟int 只是在精度上有差别??) 展开
{
int n,t,number=20;
float a=2,b=1,s=0;
for(n=1;n<=number;n++)
{
s=s+a/b;
t=a,a=a+b,b=t;
}
printf("总和=%9.6f\n",s);
}
其结果是3.14。。。。
将上面的float a=2,b=1换成int a=2 b=1;其结果为20.0000000.。
为什么差别这么大(float 跟int 只是在精度上有差别??) 展开
5个回答
展开全部
int和float首先明白其本质是数据类型,何为数据类型,其实其名字就告诉我们,像我们学习时喜欢把整数和小数分开一样,这里的int是整数类型,float是浮点数(小数类型)。这不就是俩种数据类型
那么为什么要区分那,主要原因是计算机在存储数据时分配的内存空间是不同的,你定义了int(整型)它就分配对应整型的大小,比如4个内存单元。
那么我为什么要说比如是4个内存单元那,原因是不同的cpu分配内存是不一样的,32位cpu分配的int就是4个字节,至于为什么如此,这是硬件设计时决定的(32位/8=4字节)(不理解跳过)
综上所述,你应该明白你定义的每一个变量都会分配一块内存,并且分配内存的大小是取决于你的数据类型的。
展开全部
不是精度的问题,是这一句的原因 s=s+a/b;
int 型的 a/b 得到的是整型;float 型的 a/b 得到的浮点型;
比如说,a = 3,b = 2;
int 型得到的是1,float得到的是1.5;
int 型的 a/b 得到的是整型;float 型的 a/b 得到的浮点型;
比如说,a = 3,b = 2;
int 型得到的是1,float得到的是1.5;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int 跟 float 都是函数类型,
int 是基本整形的意思, float是单精度浮点型的意思.
你的问题出在 %9.6f 这里, 你将上面的float a=2,b=1换成int a=2 b=1 再把 %9.6f 改成%9.2f,其结果就只有2位小数了. %9.6f 这个的意思是,你输出的数字总共占9位,其中小数部分站6位,所以你输出的数字小数点后有6个.
如果你想学c语言 或是c程序设计,我介绍你一本很基础的书
谭浩强的<c程序设计>(第四版) 清华大学出版社
这本书讲的都是基础,相信对你很有帮助!!
祝学习愉快!
int 是基本整形的意思, float是单精度浮点型的意思.
你的问题出在 %9.6f 这里, 你将上面的float a=2,b=1换成int a=2 b=1 再把 %9.6f 改成%9.2f,其结果就只有2位小数了. %9.6f 这个的意思是,你输出的数字总共占9位,其中小数部分站6位,所以你输出的数字小数点后有6个.
如果你想学c语言 或是c程序设计,我介绍你一本很基础的书
谭浩强的<c程序设计>(第四版) 清华大学出版社
这本书讲的都是基础,相信对你很有帮助!!
祝学习愉快!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int型是整数,作为结果输出也只能是整数 如果是个小数,它会自动把小数位抛弃的。。float就可以是小数了。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-08-27
展开全部
int 非常不精确导致
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询