科学计数法的值
科学计数法是一种数学专用术语。将一个数表示成 a×10的n次幂的形式,其中1≤|a|<10,n为整数,这种记数方法叫科学计数法。例如920000可以表示为9.2*10^5
现在需要对输入的字符串进行分离,自动识别该科学计数法中的a和幂次,计算其表征的具体数值并输出该值。
例如,对于输入的复数字符串“9.210^5”,输出 The actual value for 9.210^5 is 920000
注意:
1、每组测试数据仅包括一个用于科学计数法的字符串。
2、输入字符串保证合法。
3、字符串长度不超过1000
4、幂次不超过200
输入示例:
9.2*10^5
输出示例:
The actual value for 9.2*10^5 is 920000
分析
#include<iostream>
#include<string>
using namespace std;
int main(){
string s,x1,x2;
char flag;
cin>>s;
cout<<"The actual value for "<<s<<" is ";
if(s[0]=='-'){
cout<<"-";
x1=s[1];
flag=s[2];
x2=s.substr(s.find(".")+1,s.find("*")-3);
}
else{
x1=s[0];
flag=s[1];
x2=s.substr(s.find(".")+1,s.find("*")-2);
}
//cout<<" x1= ";
cout<<x1;
string z=s.substr(s.find("^")+1);
if(flag=='.'){ //有小数点
//cout<<" xx2= ";
//cout<<x2;
//cout<<" xx22= ";
int count=stoi(z)-x2.length();
if(count>=0){
//cout<<" x2= ";
cout<<x2;
for(int i=0;i<count;i++){
//cout<<" x0= ";
cout<<"0";
}
}
else{
//cout<<" x22= ";
cout<<x2.substr(0,stoi(z))<<"."<<x2.substr(stoi(z));
}
}
else{ //无小数点
int count=stoi(z);
for(int i=0;i<count;i++){
//cout<<" x0= ";
cout<<"0";
}
}
return 0;
}
参考资料: