我正在学习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).对于您拥有的序列,它将保证所需的准确性.