哪错了 为什么精度不够输入5输出的不是样例给的数 我用double数组也没错呀

哪错了 为什么精度不够输入5输出的不是样例给的数 我用double数组也没错呀

问题在代码的第7行和第13行里,循环的次数未达到,所以出现误差,修改如下:
#include <stdio.h>
int main()
{
int n;
scanf("%d", &n);
double a[105];
for (int i = 0; i <= n; i++) { // 修改
a[i] = (double)1.0 / (2 * i + 1);
if (i % 2 != 0)
a[i] = a[i] * (-1.0);
}
double sum = 0;
for (int i = 0; i <= n; i++) { // 修改
printf("%lf\n", a[i]);
sum = sum + a[i];
}
printf("%.2lf", sum);
return 0;
}