我必须找到几何级数1/3 + 1/9 + 1/27 .....的总和,我必须用setprecision 6输出总和。
这是我的代码:
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
int n;
int x = 1;
float sum = 0;
cin >> n;
for (int i = 1; i <= n; i++){
x *= 3;
sum += (float)(1/x);
}
cout << fixed << setprecision(6);
cout << "Sum of the geometric progression of the first " << n << " elements is " << sum << endl;
return 0;
}
程序始终输出0.000000,当我尝试在for循环中添加测试cout时,程序崩溃。
答案 0 :(得分:12)
(1/x)
始终为0,因为两个参数都是int
。例如,使用(1.0 / x)
代替。
答案 1 :(得分:1)
因为x
是int
,
(1/x)
被评估为整数除法,它向下舍入为零。然后将其转换为(float)
,但它已经为零。
您可以使用(1 / (float) x)
来获得所需内容。
答案 2 :(得分:1)
更改此行:
sum += (float)(1/x);
为:
sum += (1/(float)x);
你正在进行整数除法,结果为0,然后将该结果转换为float。