题目描述
科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[±][1-9]"."[0-9]+E[±][0-9]+,即数字的整数部分
只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出。
现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。
输入描述:
每个输入包含1个测试用例,即一个以科学计数法表示的实数A。该数字的存储长度不超过9999字节,且其指数的绝对值不超过9999。
输出描述:
对每个测试用例,在一行中按普通数字表示法输出A,并保证所有有效位都被保留,包括末尾的0。
输入例子:
+1.23400E-03
输出例子:
0.00123400
楼主的代码
import decimal
n=input()
n=list(n)
a=n.index('E')
b=int(''.join(n[a+2:]))
if(n[a+1]=='-'):
for i in range(1,b+1):
n.insert(i,'0')
n.pop(b+2)
n.insert(2,'.')
a=n.index('E')
x=len(n[a:])
for i in range(0,x):
n.pop(a)
if(n[0]=='+'):
n.pop(0)
n=''.join(n)
else:
d=a-2
if(b>=d):
if(n[0]=='-'):
n=decimal.Decimal(''.join(n[1:a]))
n=int(n*(10**b))
n=-n
else:
n=decimal.Decimal(''.join(n[1:a]))
n=int(n*(10**b))
else:
n.insert(2+b,'.')
n.pop(2)
if(n[0]=='+'):
n.pop(0)
a=n.index('E')
x=len(n[a:])
for i in range(0,x):
n.pop(a)
n=''.join(n)
print(n)