为了账号安全,请及时绑定邮箱和手机立即绑定

以下程序是无误的,但是其中s=s+(double)a/b;这里的(double)何解?

以下程序是无误的,但是其中s=s+(double)a/b;这里的(double)何解?

PHP C
慕沐林林 2022-04-21 19:15:24
#include #include #include double fun(int n) { int a=2,b=1,c,k; double s=0.0; for (k=1;k<=n;k++) { s=s+(double)a/b; c=a;a=a+b;b=c; } return (s); } void main() { int n=5; system("cls"); printf("\nthe value of function is:%1f\n",fun(n)); } 程序是无误的,但是其中s=s+(double)a/b;这里的(double)何解?
查看完整描述

3 回答

?
largeQ

TA贡献2039条经验 获得超8个赞

(double)a/b
先把a转换成double型再进行除法运算,得数是double型。
不加double的话a/b舍去小数返回的是int型。

查看完整回答
反对 回复 2022-04-24
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

s=s+(double)a/b,这里的(double)是把a进行
强制类型转换
,从int转换成double。如果不进行转换的话,由于a和b都是int,a/b的结果也就会取整(这个程序看不出区别,但是当a=1,b=2时,a/b就因为取整为0,而不是你想要的0.5),导致可能与
你想要的结果
不一样。

查看完整回答
反对 回复 2022-04-24
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

把a/b的结果转换成double型,不过既然你的s是double,系统会默认就是double的吧。

查看完整回答
反对 回复 2022-04-24
  • 3 回答
  • 0 关注
  • 735 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号