//
// main.cpp
// PAT_1073. Scientific Notation
//
// Created by wjq on 17/8/19.
// Copyright © 2017年 wjq. All rights reserved.
//
#include <iostream>
#include <string>
using namespace std;
string str;
int E;
int main(int argc, const char * argv[])
{
cin>>str;
E = (int)str.find('E');
if(str[0]=='-')
cout<<"-";
int zhishu =atoi(str.substr(E+2).c_str());
//指数为0
if(zhishu==0)
{
for(int i=1;i<E;i++)
cout<<str[i];
}
//指数部分为负数
else if(str[E+1]=='-')
{
cout<<"0.";
for(int i=0;i<zhishu-1;i++)
cout<<"0";
cout<<str[1];
for(int i=3;i<E;i++)
cout<<str[i];
}
//指数部分为正数
else
{
cout<<str[1];
int j;
for(j=3;j<zhishu+3&&j<E;j++)
cout<<str[j];
//指数比小数部分多,要补0,就不需要小数点了.
if(zhishu>E-3)
{
int k=0;
while(k<zhishu-(E-3))
{
cout<<"0";
k++;
}
}
else if(zhishu<E-3)
{
cout<<".";
for(;j<E;j++)
cout<<str[j];
}
}
return 0;
}
这题是一道模拟题,就是把科学计数法表示的数转换成正常表示.
题意说明数字部分和指数部分的符号位一定是存在的,因此可以对指数部分的符号位进行分类讨论.