版权声明:请勿商业化使用 https://blog.csdn.net/qq_40991687/article/details/89523730
问题描述:
已知e=2.71828,求出x=2.718的绝对误差、相对误差和有效位数。
问题分析:
老简单了,边看代码变分析
误差问题
输入:
2.71828
2.718
#include<cstdio>
#include<cmath>
int valid(double n,double m) {
int count=0;
double s=fabs(n-m);
while(s<=0.5) {
count++;
s*=10;
}
return count;
}
int main () {
double n,m;
scanf("%lf %lf",&n,&m);
printf("绝对误差:%lf\n",n-m);//绝对误差 = 真值 - 近似值
printf("相对误差:%lf\n",1.*(n-m)/n);//相对误差 = 绝对误差 / 真值
printf("有效位数:%d\n",valid(n,m));//有效位数:如果绝对误差的绝对值<=0.5*10e-n;那么就称近似值精确到小数点后第n位,有效位数为n+1
return 0;
}
运算结果:
绝 对 误 差 : 0.000280
相 对 误 差 : 0.000103
有 效 位 数 : 4