#include<iostream>
#include<string>
using namespace std;
int main() {
string s;
cin >> s;
int pos = 0;
while (s[pos] != 'E') //找到E的位置将底数和指数分割
pos++;
int exp = 0;
for (int i = pos + 2; i < s.length(); i++) //将字符型的指数化为10进制整数
exp = exp * 10 + (s[i]-'0');
if (exp == 0) //特判:若指数为0,直接输出底数
for (int i = 0; i < pos - 1; i++)
cout << s[i];
if (s[0] == '-') //输出符号
cout << s[0];
if (s[pos + 1] == '-') { //如果指数为负
cout << "0.";
for (int i = 0; i < exp - 1; i++) //输出exp-1个0
cout << 0;
for (int i = 1; i <= pos-1 ; i++) {
if (s[i] == '.')
continue;
cout << s[i];
}
}
else if (s[pos + 1] == '+') { //如果指数为正
for (int i = 1; i <= pos - 1; i++) {
if (s[i] == '.')
continue;
cout << s[i];
if (i == exp + 2 && pos - 3 != exp) { //小数点输出的条件:位置是exp+2(一个符号位,一个小数点位),且小数点位置后的底数位数比exp的值小(如果>=的话就不需要输出小数点了)
cout << '.';
}
}
for (int i = 0; i < exp - (pos - 3); i++)
cout << 0;
}
system("pause");
return 0;
}
【A1073/字符处理】科学计数法(有点绕)
于 2022-03-04 17:06:26 首次发布