您的位置:首页 > 其它

PAT1024 科学计数法

2014-05-18 21:01 232 查看
不知道语言内部到底怎么处理的,总觉得充满艺术性

#include<iostream>
#include<string>
using namespace std;
int main(){
if(cin.get()=='-')
cout<<'-';

string st;//9999位小于string::npos
getline(cin,st,'E');
int n;    //9999小于INT_MAX
cin>>n;

if(n<0){                            //小数点往左,左边只有一位
st="0."+string(-n-1,'0')+st;
st.erase(st.rfind('.')+st.begin());
}
else{                               //小数点往右,右边有很多位
int it=st.find('.');
int m=st.size()-it-1;             //m是小数点右边的数字位数
if(m<n)
st+=string(n-m,'0');
else if(m>n)
st.insert(st.begin()+it+n+1,'.');//若st.insert(st.begin()+it+n,'.');n==1就错了,看准插入位置
st.erase(st.find('.')+st.begin());

it=st.find_first_not_of("0");      //整理
if(it==string::npos)
st="0";
else if(it>1)
st.erase(st.begin(),st.begin()+it);
}
cout<<st;
return  0;}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: