可恶心了,求出指数是多少,然后小数点左右移动,加0补0
#include<bits/stdc++.h>
#include <iostream>
#include <map>
#include <string>
#include<vector>
#include<stack>
using namespace std;
int main() {
string s;
cin>>s;
int len=s.length();
if(s[0]=='-')cout<<"-";
int pos=s.find("E");
string tmp=s.substr(pos+1,s.length()-pos-1);
int zhishu=atoi(tmp.c_str());
if(zhishu<0) {
zhishu=-zhishu;
cout<<"0.";
for(int i=1; i<zhishu; i++)cout<<"0";
for(int i=1; i<pos; i++)
if(isdigit(s[i]))
cout<<s[i];
} else if(zhishu==0){
for(int i=1;i<pos;i++)
{
if(s[i]=='.')cout<<".";
else cout<<s[i];
}
}
else
{
if(pos-3<zhishu)
{
if(s[1]!='0')cout<<s[1];
for(int i=3;i<pos;i++)
{
if(isdigit(s[i]))
cout<<s[i];
}
for(int i=0;i<zhishu-pos+3;i++)
{
cout<<"0";
}
}
else
{
if(s[1]!='0')cout<<s[1];
for(int i=3;i<pos;i++)
{
if(i==3+zhishu)cout<<'.';
if(isdigit(s[i]))
cout<<s[i];
}
}
}
return 0;
}