1073. Scientific Notation (20)
讲科学技术法转换成正常的数值表示法。
注意小数点在最后的情况即可,比如+1.2E+1,结果为12,而不是12.。
#include <string>
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
string linetonum(const string &line);
int main()
{
string line;
cin >> line;
cout << linetonum(line) << endl;
return 0;
}
string linetonum(const string &line)
{
string exp(line, line.find('E')+1, line.length()), number(line, 1, line.find('E')-1);
int numexp = atoi(exp.c_str());
if (numexp > 0)
{
while(numexp--)
{
size_t ppos(number.find('.'));
if (ppos == string::npos)
{
number += '0';
}
else
{
number[ppos] = number[ppos+1];
number[ppos+1] = '.';
if (number.find('.') == number.length() - 1)
{
number.erase(number.find('.'));
}
}
}
}
else
{
while(numexp ++)
{
size_t ppos(number.find('.'));
number[ppos] = number[0];
number[0] = '.';
number = "0" + number;
}
}
if (line[0] == '-')
{
number = "-" + number;
}
return number;
}
3476

被折叠的 条评论
为什么被折叠?



