永发信息网

C语言双精度干吗用的?

答案:5  悬赏:40  手机版
解决时间 2021-03-17 10:37
  • 提问者网友:送舟行
  • 2021-03-16 13:40
# include<stdio.h>
int main()
{
int sign=1;
double deno=2.0,sum=1.0,term;
while (deno<=100)
{
sign=-sign;
term=sign/deno;
sum=sum+term;
deno=deno+1;
}
printf("%f\n",sum);
return 0;
}
这里用2.0和1.0代替2和1,结果一样,两者有啥区别,求高手指点 谢谢 啊
最佳答案
  • 五星知识达人网友:廢物販賣機
  • 2021-03-16 15:09
整形和浮点型数据的存储格式不同,进行除法运算的时候结果也会有差异,你可以试着定义几个整形和浮点型数据进行除法运算,查看结果。
比如:int i = 1/2;(i结果为0) int i = 1/2.0;(结果为0.5),double i = 1/2;(结果为0)double i = 1/2.0;(结果为0.5),。结果的不同是因为整形和浮点型数据运算时保留位数不同,而且进行算术运算的时候有一个默认格式转换,小的向大的转即int向double转。
明白了这个之后,你可能会对整形和浮点型数据的算术运算有点了解了,建议你找更多资料来深入了解。
看你的程序,之所以2.0 1.0和2 1结果一样是因为你在定义变量的时候已经表明他们是double型的变量了,所以你写不写.0他们在内存中都是以double的形式存储的。
全部回答
  • 1楼网友:独行浪子会拥风
  • 2021-03-16 19:16
因为sign是int,deno是double,所以他们的计算结果是double型的,也就是带小数点的,如果deno是int型,那计算结果会是整型,不带小数点的,这样就缺精度了
  • 2楼网友:七十二街
  • 2021-03-16 18:09
科学运算要用到啊,比如物理学的,那个对精度要求高。
  • 3楼网友:罪歌
  • 2021-03-16 17:11
这样没效果的,你把deno=3.0,sum=2.0就看到效果了,如果是int的话加过是1,double就不是了,可以精确到小数点
  • 4楼网友:雾月
  • 2021-03-16 16:34
程序中,应用了除法,应用double双精度类型会比整形得到的结果准确,你看到的结果一样,只是因为恰好整除了,如果不能整除得到的结果是不一样的
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯