C语言泰勒公式

求公式sin(x)=x-x3/3!+x5/5!-x7/7!+x9/9!- ...,要求精度不低于1e-5
下面是我的代码

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int main() {
    double x, sum = 0, y=0,sum1, i=1,t,j,u;
    

    scanf("%lf", &x);
    do {
        u = pow(-1, i + 1);
        t = pow(x, 2*i - 1);
        for (j = 1,sum1=1; j <= 2 * i - 1; j++) {
            sum1 = sum1*j;
            
        }
        y = u*t / sum1;
        sum = sum + y;
        i++;

    } while (fabs(y) >= 1e-5);
    printf("%.5lf", sum);
    system("pause");
    return 0;
}

那么问题出现了。。。有时候期望输出是0.99958 可我的程序输出是0.99957 为什么会差0.00001啊 难道是四舍五入的问题吗?如何修改?如果是4舍五入问题那么sum加上0.000005后再%.5lf其他数据又不对了。。恳请赐教。。感谢!

阅读 4.7k
3 个回答

请说清楚你的运行环境以及什么时候“预期输出0.99958”

新手上路,请多包涵
printf("%.5f", sum);

input 1.541812559
output 0.99958

编译器问题吧。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进