1024 科學計數法

YuKiCheng發表於2024-04-16

字串處理,費勁。

#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;
}

相關文章