情况分析
- 1.23*10^0
- 1.2310^1
-1.2310^10
-1.23*10^(-1)
//这题友好在不用讨论整数部分和指数的情况
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <string.h>
#include <cmath>
#include <math.h>
#include <vector>
#include <queue>
#include <map>
#include <set>
#include <stack>
using namespace std;
typedef long long ll;
const int MAX=1005;
const int INF=0x3f3f3f3f;
const int mod=1000000007;
int main()
{
int flag;
string s,temp;
cin>>s;
if(s[0]=='-')
{
cout<<"-";
}
s.erase(s.begin());
int i=0;
while(s[i]!='E')
{
if(s[i]=='.')
{
flag=i;
i++;
continue;
}
temp+=s[i];
i++;
}
i++;
int sum=0;
for(int k=i+1;k<s.size();k++)
{
sum=sum*10+s[k]-'0';
}
if(sum==0)
{
cout<<temp[0]<<"."<<temp.substr(1,temp.size()-1);
}
else
{
if(s[i]=='-')//小数点前只有一位数
{
string res="0.";
for(int k=0;k<sum-1;k++)
{
res+='0';
}
res+=temp;
cout<<res;
}
else//'+',小数点后i-2-flag位
{
if(sum-(i-2-flag)>=0)
{
for(int k=0;k<sum-(i-2-flag);k++)
{
temp+='0';
}
cout<<temp;
}
else
{
cout<<temp.substr(0,1+sum)<<"."<<temp.substr(1+sum,(i-2-flag)-sum);
}
}
}
return 0;
}