对科学计数法表示的数,输出其10进制的形式。
c++来做,需要考虑这些细节:
当b==0,d==0时,只输出a。
当不需要补零的情况有两种:
一种是刚好是整数,只输出a(注意1.0e1的情况是输出1);另一种是还要输出剩下的小数部分。
#include<cstdio> #include<algorithm> #define N 200005 using namespace std; int a,b,dl,dr; char s[N]; int main(){ scanf("%s",s); printf("%c",s[0]); dl=2; int d=0; for(dr=dl;s[dr]!=‘e‘;dr++)//dr为e的位置 if(s[dr]!=‘0‘&&s[dr]!=‘e‘)d=1;//d不为0 for(int i=dr+1;s[i];i++) b=b*10+s[i]-‘0‘; if(b==0){ if(d){ printf("."); for(int i=dl;i<dr;i++) printf("%c",s[i]); } }else { for(int i=dl;i<min(dl+b,dr);i++) printf("%c",s[i]); if(dl+b>=dr) for(int i=1;i<=b-(dr-dl);i++) printf("0"); else if(d){ printf("."); for(int i=dl+b;i<dr;i++) printf("%c",s[i]); } } }
JAVA和python则可以很轻松地解决(粘一发别人的代码):
//python from decimal import * a=input() b=Decimal(a) if(round(b)==b): print ("%d"%b) else: print (b)
时间: 2024-10-25 09:20:03