用c程序计算e ^ x的值,最多可校正10个小数位

问题描述

我正在写一个程序,根据扩展公式计算e ^ x的值,我需要打印答案以使其正确至小数点后10位。我尝试使用for,while和while循环来完成此操作,但是我无法弄清楚在何处终止循环,可以使用哪种条件终止循环。我写的代码如下:

#include<stdio.h>
#include<math.h>
int factorial(int x);
int main()
{
    int x,n;
    float sum,d_1;
    printf("Enter the value of power :");
    scanf("%d",&x);
    n=1;sum=1;
    while(sum <= %.10f)
    {
        d_1=pow(x,n)/factorial(n);
        sum=sum+d_1;
        n++;
    }
    printf("Answer is %f",sum);
    return 0;
}
int factorial(int y)
{
    int fact=1,i;
    for(i=1;i<=y;i++)
    {
        fact=fact*i;
    }
    return(fact);
}

,并且我在%之前收到错误消息预期的表达式。 请帮忙。

解决方法

您要在当前项小于某个值时终止循环。另外,您还希望循环至少执行一次,因此最好使用do-while循环:

n = -1;
do {
    n++;
    d_1 = pow(x,n) / factorial(n);
    sum = sum + d_1;
} while (d_1 > epsilon);

正如评论中提到的,关于精度和溢出,代码还有其他问题,但这是另一回事。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...