题意:
给出科学计数法的形式,转化成常规的表示,要求保留所有的有效位数
思路:纯粹的字符串处理问题,注意边界条件即可。如+1.23E+02这种,转化后是123,既不需要补0,也不需要添加小数点。
代码:
#include#include using namespace std;string change(string str){ string ans,sign; if(str[0]=='-') sign="-"; str.erase(str.begin()); int pos=str.find("E"); string strExp=str.substr(pos+1,str.size()-1-pos); str=str.substr(0,pos); int exp=stoi(strExp); pos=str.find("."); str.erase(pos,1); if(exp<0){ //前面添0 ans="0."+string(-exp-1,'0')+str; }else{ //后面补0 int len=str.size()-1;//小数点后面的位数 if(len exp) { ans=str; ans.insert(exp+1,"."); }else{ ans=str; } } return sign+ans;}int main(){ string str; cin>>str; cout<