1024 科学计数法

字符串处理,费劲。

#include <bits/stdc++.h>
using namespace std;
int main() {
	string s;
	cin>>s;
	//找到E的位置
	int index = s.find('E');
	//分割开
	string s1 = s.substr(1,index-1);//数据部分
	string s2 = s.substr(index+1);//指数部分
	int zs = stoi(s2);
	if(s[0]=='-') {
		cout << s[0];
	}
	if(zs < 0) { //指数是负数
		cout << "0.";
		for(int i=0; i<-zs-1; i++) {
			cout << "0";
		}
		for(int i=0; i<s1.size(); i++) {
			if(s1[i]!='.') {
				cout << s1[i];
			}
		}
	} else { //指数是正数
		string se = s.substr(3,index-3);//截取字符串 
		int len = se.size();//找到小数部分的长度
		if(len>zs) { //指数小于小数位数 
			for(int i=0; i<s1.size(); i++) {
				if(s1[i]=='.') {
					continue;
				}
				cout << s1[i];
				if(i == 1 + zs) {
					cout << ".";
				} 
			}
		} else if(len==zs) {
			for(int i=0; i<s1.size(); i++) {
				if(s1[i]!='.') {
					cout << s1[i];
				}
			}
		} else {
			for(int i=0; i<s1.size(); i++) {
				if(s1[i]!='.') {
					cout << s1[i];
				}
			}
			//末尾添加0
			for(int i=0; i<zs-len; i++) {
				cout << "0";
			}
		}
	}
	return 0;
}
posted @ 2024-04-16 11:21  YuKiCheng  阅读(8)  评论(0编辑  收藏  举报