对于学校作业,我们应该写一小段代码来计算最多100的伸缩限制。期望的答案应该是sum is: 0.99000
但无论我尝试什么,我的输出总是sum is: 0.00000
。
我希望这是一个我忽略的快速解决方案,但我不能,因为我的生活,弄清楚它是什么。
这是我的代码:
#include <stdio.h>
int main(){
float ans=0.0;
for(int i=1; i<100; i++){
ans += 1/ (i*(i+1));
}
printf("sum is: %.5f",ans);
return 0;
}
答案 0 :(得分:2)
看一下表达式
1/ (i*(i+1))
i
的类型为int,1
(数字)默认为类型int
(类型为int
的整数常量),是迂腐的。 / p>
因此,所有参与成员都是int
类型,算术将是整数算术。它不是浮点运算。因此,对于上面的表达式,对于i
的任何值,大于0
,您将得到0
的结果作为整数除法的结果。
你需要
float
或double
类型操作数float
或double
强制执行浮点运算以获得所需的结果。