小小的模拟
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
vector<int>num1,num2;
int main()
{
string s;
int op1 = 0,op2 = 0;//0+ 1-
int f = 0;
cin>>s;
//op1
if(s[0]!='+') op1 = 1;
//
int i = 1;
for(;;)
{
if(s[i] == 'E')
{
i++;
if(s[i++]!='+') op2 = 1;
break;
}
if(isdigit(s[i]))
{
num1.push_back(s[i]-'0');
}
i++;
}
//num2
int ok = 1;
for(;;)
{
if(i== s.size()) break;
if(s[i] == '0')
{
if(!ok)
{
num2.push_back(s[i]-'0');
}
}
if(s[i]!='0')
{
ok = 0;
num2.push_back(s[i]-'0');
}
i++;
}
for(int i = 0;i<num2.size();i++)
{
f = f*10 + num2[i];
}
if(op2) f=-f;
f++;
//output
if(op1) cout<<"-";
if(f<=0)
{
cout<<0<<".";
for(int i = -1;i>=f;i--)
{
cout<<0;
}
for(int i = 0;i<num1.size();i++)
{
cout<<num1[i];
}
}
else
{
i = 0;
for(i = 0;i<num1.size();i++)
{
if(i == f) cout<<".";
cout<<num1[i];
}
for(i;i<f;i++)
{
cout<<0;
}
}
return 0;
}
/**
+1.23400E-01
**/