1

我必须找到几何级数的总和 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 时,程序崩溃。

4

3 回答 3

12

(1/x)始终为 0,因为两个参数都是int. 改为使用例如(1.0 / x)

于 2013-10-31T22:31:15.613 回答
1

因为x是一个int

(1/x)

被评估为整数除法,向下舍入为零。然后将其转换为(float),但它已经为零。

你可以用(1 / (float) x)得到你想要的。

于 2013-10-31T22:31:58.350 回答
1

更改此行:

    sum += (float)(1/x);

到:

    sum += (1/(float)x);

您正在进行整数除法,结果为 0,然后将该结果转换为浮点数。

于 2013-10-31T22:32:17.610 回答