可恶心了,求出指数是多少,然后小数点左右移动,加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;
}
本文介绍了一种使用C++实现的科学计数法转换方法,能够将带有指数的科学计数法表示的数字转换为标准的浮点数表示。通过解析输入字符串,找到指数部分,然后根据指数正负进行小数点的左右移动,完成转换。

2880

被折叠的 条评论
为什么被折叠?



