为什么这个函数不能直接定义成double i吗?

#include<conio.h>
#include<stdio.h>
float fun(int m)
{
double y=0,d;
int i;
for(i=100;i<=m;i+=100)
{
d=(double)i*(double)i;
y+=1.0/d;
}
return y;
}
void main()
{
int n=2000;
printf("\nThe result is %lf\n",fun(n));
}

斯蒂芬大帝
浏览 240回答 2
2回答

慕婉清6462132

#include<conio.h>#include<stdio.h>double&nbsp;fun(int&nbsp;m)&nbsp;//返回值类型不符{&nbsp;&nbsp;&nbsp;&nbsp;double&nbsp;y=0;&nbsp;&nbsp;//d无用,去掉&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i;&nbsp;&nbsp;&nbsp;&nbsp;for(i=100;i<=m;i+=100)&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;y;}void&nbsp;main(){&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;n=2000;&nbsp;&nbsp;&nbsp;&nbsp;printf("\nThe&nbsp;result&nbsp;is&nbsp;%lf\n",fun(n));}如果 将i定义成double类型,则可能在for(i=100;i<=m;i+=100) 这里的循环控制出现偏差,因为浮点数的不精确性原因造成的。

小怪兽爱吃肉

#include<conio.h>#include<stdio.h>double fun(int m) //返回值类型不符{double y=0; //d无用,去掉int i;for(i=100;i<=m;i+=100){}return y;}void main(){int n=2000;printf("\nThe result is %lf\n",fun(n));}如果将i定义成double类型,则可能在for(i=100;i<=m;i+=100)这里的循环控制出现偏差,因为浮点数的不精确性原因造成的。
打开App,查看更多内容
随时随地看视频慕课网APP