误差问题

版权声明:请勿商业化使用 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

猜你喜欢

转载自blog.csdn.net/qq_40991687/article/details/89523730
今日推荐