#include<bits/stdc++.h>
using namespace std;
int main(){
string a,z;
string ans="";
cin>>a;
int dm,epo,fh=-1,len;
for(int i=0;i<a.size();i++){
if(a[i]=='.'){
dm=i;
}
if(a[i]=='E'){
epo=i;
if(a[i+1]=='-'){
fh=0;//向左
}
else{
fh=1;//向右
}
z=a.substr(i+2);
}
}
len=epo-dm-1;
int q=stoi(z);
if(fh==0){
if(a.substr(0,1)=="-")//负的才带
ans+=a.substr(0,1);
ans+="0.";
for(int i=0;i<q-1;i++){
ans+='0';
}
ans+=a.substr(1,1);
ans+=a.substr(dm+1,len);
}
else{
if(len<=q){
if(a.substr(0,1)=="-")
ans+=a.substr(0,1);
ans+=a.substr(1,1);
ans+=a.substr(dm+1,len);
for(int i=0;i<q-len;i++){
ans+='0';
}
}
else{
if(a.substr(0,1)=="-")
ans+=a.substr(0,1);
ans+=a.substr(1,1);
ans+=a.substr(dm+1,q);
ans+='.';
ans+=a.substr(dm+q+1,len-q);//len是长度不是位置
}
}
printf("%s",ans.c_str());
return 0;
}
总结
1.记录小数点的位置以及E得位置以及方向即可
2.注意当指数小芋圆小数点后的位数要再重填小数点
英语
问题
无