做作业所需的解决方案 - C#

Ang*_*kov 1 c#

我正在学习C#atm并试图解决我书中描述的一个问题.写一个程序,计算和打印(精度为0.001)序列1 + 1/2 - 1/3 + 1/4 - 1/5 + ....我知道这是一个常见的问题,但我几乎失去了整整一天要解决它,但我不能单独做(也许我没有努力).

static void Main()
{
    double sum = 0D;
    double sum1 = 0d;
    int i = 1;
    while ( i <100)
    {
        i++;
        if (i % 2 == 0)
        {
            sum1 = sum1 +(1 / i);
        }
        else
        {
            sum1 = sum1 -(1 / i);
        }

        sum = sum1 + sum;
        Console.WriteLine(Math.Round(sum, 3));
    }
}
Run Code Online (Sandbox Code Playgroud)

Sas*_*sha 10

由于"i"是一个整数,除法1/i总是得到0(除了i = 1的情况),因为"/"是一个整数除法运算符,它从不给出分数.所以你应该将一个双重值1.0/i除以得到分数.

此外,循环条件i <100不是您所需要的.最好设置那里(1.0/i> 0.001)或转换(i <1000).对于您拥有的序列,它将保证所需的准确性.