#include<iostream>
#include<string>
#include<cstring>
using namespace std;
int main()
{
string s1,s2;
cin>>s1;
int epoint;
for(int i=0;i<s1.length();i++)
{
if(s1[i]=='E')
{
epoint=i;
break;
}
}
s2=s1.substr(1,epoint-1);
int enumber=0;
enumber=stoi(s1.substr(epoint+1));
if(s1[0]=='-')
cout<<'-';
if(enumber<0)
{
cout<<"0.";
for(int i=0;i<abs(enumber)-1;i++)
cout<<'0';
for(int i=1;i<epoint;i++)
{
if(s1[i]!='.')
cout<<s1[i];
}
}
else
{
cout<<s1[1];
int i,cnt;
for( i=3,cnt=0;i<epoint&&cnt<enumber;i++,cnt++)
cout<<s1[i];
if(cnt<enumber)
for(int i=enumber-cnt;i>0;i--)
cout<<'0';
else
{
if(i!=epoint)
{
cout<<'.';
for(i;i<epoint;i++)
cout<<s1[i];
}
}
}
return 0;
}
这里对substr和stoi的运用比较巧妙,注意一下。
同时,注意打印方式。当是负指数时比较好打印,为正数时先把数打印出来,如果指数更大添0,否则打印小数点后打印剩余数字