#include
#include
#include
using namespace std;
int main()
{
int n ;//定义n项
cin >> n;
double sum = 0;//要用double型累加器
for(int i = 1; i <= n ; i++)
{
double ai = pow( -1 , i-1 ) * (1 / i * 1.0) ;//递推公式(结果要浮点型,所以要乘1.0)
sum += ai;
}
cout << fixed << setprecision(4) << sum << endl;
return 0;
}
为什么我用代码算一下和机器用代码算的不一样?
(i*1.0)这里用括号包括起来试试看,要不就是精度设置那里的问题。望采纳哦!!!
可能是i=2时,1/i * 1.0=1/2 * 1.0=0 * 1.0=0,所以导致与你的不一样。将double ai = pow( -1 , i-1 ) * (1 / i * 1.0) ;这句改成 double ai = pow( -1 , i-1 ) * (1.0 / i * 1.0) ;
程序会先计算 1 / i
(整形) 再 乘上 1.0
应该用 1.0 / i
才会变成浮点型
第14行,修改为:double ai = (i % 2 == 0) ? (-1.0 / i) : (1.0 / i);