看题解貌似没人去算有效数字,都是直接数据计算输出的,这里分享一下自己的算法,主要是提供一下思路,用于求未知数据进行有效数字输出。
//代码如下(只是一个函数,不是原代码)
void w4(){
double x;
int x_,y,i;
x=(double)500/3;//注意要转换成double类型,不然小数位会丢失
x_=(int)x;//转存整数位。
for(i=0;;i++)
{
int j=x_/pow(10,i);//pow是幂函数,第一个数是底数,第二个数是次方
if(j==0) break;
}//得出整数位的位数i;
//分情况进行有效数字输出
if(i<7){
int k=6-i;
switch(k){
case 0:printf("%.0lf",x);break;
case 1:printf("%.1lf",x);break;
case 2:printf("%.2lf",x);break;
case 3:printf("%.3lf",x);break;
case 4:printf("%.4lf",x);break;
case 5:printf("%.5lf",x);break;
case 6:printf("%.6lf",x);break;
}
}//位数比六大一般不会求六位有效数字,误差太大
}
欢迎交流,进行其他有效数字可以直接改代码,但是要是涉及高位有效数字就会很麻烦,希望有大佬能改良思路。