/*************************
题意:
把科学计数法转为常见数字
注意保留所有后置0
不会有前导0的情况
不会有0的情况
************************/
/***********************
这题只要确定了小数点的位置,即可以求
灵活利用substr和find构建字符串
要注意的点
不需要处理前导0,因为不会有这种情况(注意正则表达式)
+1.23E+2 = 123 而不是123.
1.000,其后面3个0也都要保留
*************************/
/***********************
笔记:
substr的使用方式是substr(a,len)
或者substr(a)
*********************/
#include<iostream>
#include<stdio.h>
#include<string>
#include<vector>
#include<queue>
#include<stdlib.h>
#include<algorithm>
#include<string.h>
#include<stack>
#include<map>
#include<set>
#include<unordered_map>
using namespace std;
#define M 110000
#define INF 0x7fffffff
map<string, int> SMap;
int main(){
char c;
string s;
scanf("%c",&c);
if(c == '-')
cout<<"-";
cin>>s;
int fp = s.find('.');
int fe = s.find('E');
string num;
if(fp != -1){
num = s.substr(0,fp);
num += s.substr(fp+1,fe-fp-1);
}
else{
num=s.substr(0,fe);
fp = fe; //没有小数点,相当于在ep的位置
}
if(s[fe+1]=='+'){
fp += atoi(s.substr(fe+2).c_str());
}
else{
fp -= atoi(s.substr(fe+2).c_str());
}
int i;
string ans;
if(fp <=0){
ans += "0.";
for(i=fp;i<0;i++)
ans += "0";
ans += num;
}
else if(fp >= num.size()){
ans += num;
for(i=num.size();i<fp;i++)
ans += "0";
}
else{
num = num.substr(0,fp) + '.' + num.substr(fp);
ans += num;
}
cout<<ans<<endl;
return 0;
}
06-14
06-14
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交