如何对float变量中的整数除法求和?

时间:2018-07-21 10:53:13

标签: c

我正在编写一个简单的C程序,打印出谐波序列之和,如:

this.player.setupPlayer()

我的程序是:

1 + 1/2 + 1/3 + ...... + 1/n

据我了解,如果为#include<stdio.h> void main(){ int n,i; float num=0, tmp=0; scanf("%d", &n); for(i=1;i<=n;i++){ tmp = 1/i; num = num + tmp; } printf("%f", num); } ,则输出必须为:n=4 但是输出为2.03333

2 个答案:

答案 0 :(得分:4)

1/i不是浮点值,由于整数除法规则,它是值0或1的整数。
该值是1/1的1,否则为0。将所有这些结果相加得到1。

这是一个浮点值:

1.0/i

将它们加起来应该可以得到想要的结果。

确切地说,我应该说1.0double
为了实际使用float值来匹配float变量,请使用1.0f。与整数值相比,它们都是浮点值。

答案 1 :(得分:3)

由于i0是整数,因此将这两个数除以整数将得到i > 1的{​​{1}}。您可以使用i来投射(float)i,而您将拥有1/(float)i