ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

科学计数法 (C语言)

2021-11-06 18:04:40  阅读:314  来源: 互联网

标签:表示 int 科学 C语言 记数法 flen 计数法 数据


对于非常大或者非常小的数据,我们通常用科学记数法来表示。例如在科技文献和电脑中经常遇到的 2.3×106 (计算机中的科学记数法表示为:2.3E6),或者 9.18×10-5 (科学记树法表示:9.18E-5)这种类型的数据。

输入:
    用科学记数法表示的数据。即为符合C语言表示的科学记数法表示。

输出:
    该数据的双精度表示

说明:
    输入数据的精度不高于小数点后50位。
    输入数据时,在实数之间有空格进行分隔,空格个数不定。
    结果保留到小数点后8位,如不足8位用0补足,超过8位则截断,不进行四舍五入的处理。

#include <stdio.h> 
#include<math.h> 
int main(){
	int arr[100];int flen=0,blen=0,i=0,j=0,k=1,ci=0,e=1;char cc;
    for(i=0;i<100;i++){//initialize 
		arr[i]=0;
	}
	i=0;
	do{//输入小数点前的部分
		cc=getchar();
		ci=cc;
		if((ci>=48)&&(ci<=57)){//判断为数字则存入数组
			arr[i]=ci-48;i++;
			flen++;//记录整数的位数
		}
		if(cc=='.'){//检测到小数点
        	break;			
		}
		if(cc==' '){//检测到空格			
			break;
		}
    } while(1);
	i=flen;
    if('.'==cc){  //上个循环于小数点处结束,输入小数部分
	 	    do{
     	    cc=getchar();
     	    ci=cc;
	 	    
     	    if((ci>=48)&&(ci<=57)){//判断为数字,输入
     		       arr[i++]=ci-48;
	 		       blen++;//记录小数的位数
	 	        }
	 	    if(cc==' '){//检测到空格,小数输入结束
	 		break;
	 	    }
	    } while(1);
	 }
	
	//end numbers input
	do{
		cc=getchar();
		if((cc='e')||(cc='E')){
			scanf(" %d",&e);
			break;
		}
	}while(1);//Nothing wrong above
	//printf("%d\n%d\n%d\n",flen,blen,e);
	if(e>0){
		for(j=0;j<flen+e;j++){
			printf("%d",arr[j]);
		}
		printf(".");
		for(k=flen+e;k<flen+e+8;k++){
			printf("%d",arr[k]);
		}
		printf("\n");
		return 0;
	}
	if(e==0){
		for(j=0;j<flen;j++){
			printf("%d",arr[j]);
		}
		printf(".");
		for(k=flen;k<flen+8;k++){
			printf("%d",arr[k]);
		}
		printf("\n");
		return 0;
	}
	if(e<0){//power is nagetive
		e=0-e;
		if(e>=flen){//左移超出整数位数
			printf("0.");
			if((e-flen)<=8){
			         for(j=1;j<=e-flen;j++){
				     printf("0");
			}}else{
				for(j=1;j<=8;j++){
				printf("0");}
			}
			for(k=0;k<=(7-e+flen);k++){
				printf("%d",arr[k]);
			}
			printf("\n");
		}else{//左移不超过整数位数
            for(i=0;i<(flen-e);i++){
				printf("%d",arr[i]);
			}
			printf(".");
			for(i=flen-e;i<(flen-e+8);i++){
				printf("%d",arr[i]);
			}
			printf("\n");	return 0;
		}
	}

}

标签:表示,int,科学,C语言,记数法,flen,计数法,数据
来源: https://blog.csdn.net/weixin_46065720/article/details/121182713

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有