科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+-][0-9]+,即数字的整数部分
只有1位,小数部分至少有1位,该数字及其指数部分的正负号即使对正数也必定明确给出。
现以科学计数法的格式给出实数A,请编写程序按普通数字表示法输出A,并保证所有有效位都被保留。
每个输入包含1个测试用例,即一个以科学计数法表示的实数A。该数字的存储长度不超过9999字节,且其指数的绝对值不超过9999。
对每个测试用例,在一行中按普通数字表示法输出A,并保证所有有效位都被保留,包括末尾的0。
+1.23400E-03
0.00123400
a=input() flag=a[0] interger=a[1] decimal="" j=3 for i in a[3:]: if i=="E": j+=1 break else: decimal+=i j+=1 flag2=a[j] index=int(a[j+1:]) # print(flag,interger,decimal,flag2,index) flag="" if flag=="+" else "-" if flag2=="+": if index>len(decimal): print(flag+interger+decimal.ljust(index,"0")) else: print(flag+interger+decimal[:index]+"."+decimal[index:]) if flag2=="-": print(flag+"0."+interger.rjust(index,"0")+decimal)
num = input().split('E')
num_1 = list(num[0])
num_1.remove('.')#将小数点移除,方便处理,+1.234=+1234
if int(num[1])<0:
for i in range(abs(int(num[1]))):
num_1.insert(1,'0')#在正负号后面添加0
num_1.insert(2,'.')#在第一个零后面添加小数点
else:
for i in range(int(num[1])-len(num_1)+2):
#设置添加0的个数,2指的是小数点跟正负号所占的位置
num_1.append('0')#添加0
if '+' in num_1:
num_1.remove('+')#如果是正数,就移除正号
for i in num_1:
print(i,end='')
import re
if __name__ == '__main__':
x = input()
regex = re.compile(r'([+\-])([1-9]).([0-9]+)E([+\-][0-9]+)')
sign, part1, part2, exp = regex.match(x).groups()
if int(exp) > 0:
part2 += '0' * (int(exp) - len(part2))
part2 = list(part2)
part2 = part2.insert(int(exp), '.') if int(exp) > len(part2) else part2
part2.insert(0, part1)
result= part2 if sign == '+' else part2.insert(0, '-')
else:
part2 = part1 + part2
part2 = '0' * (-int(exp)) + part2
part2 = list(part2)
part2.insert(1, '.')
result = part2 if sign == '+' else part2.insert(0, '-') # None
r = ''
for x in part2:
r += x
print(r)
[number,power] = input().split('E')
Output = []
if number[0] == "-":
Output.append(number[0])
move = int(power)
if move < 0:
for i in range(abs(move)):
Output.append('0')
for i in range(len(number)-1):
Output.append(number[i+1])
if Output[0] != '-':
Output[abs(move)],Output[abs(move)+1] = Output[abs(move)+1],Output[abs(move)]
Output[1],Output[abs(move)] = Output[abs(move)],Output[abs(1)]
else:
Output[abs(move)+1],Output[abs(move)+2] = Output[abs(move)+2],Output[abs(move)+1]
Output[2],Output[abs(move)+1] = Output[abs(move)+1],Output[2]
elif move >= 0:
LNumber = number.split('.')[1]
Output.append(number[1])
if move < len(LNumber):
for i in range(move):
Output.append(number[3+i])
Output.append('.')
for i in range(len(LNumber)-move):
Output.append(number[3+move+i])
elif move >= len(LNumber):
Output += number[3:]
for i in range(move-len(LNumber)):
Output.append('0')
output = ''.join(Output)
print(output)
python语言
try:
while True:
string = input()
left,right = string.split('E') #left代表数值部分
pointIndex = 1 #记录之前小数点位置
left = left[1:].replace(".","") #把小数点去掉
right = int(right) #右边指数部分
if right > 0:
if right+pointIndex >= len(left): #指数+小数点位置超过数值长度就是在数值后面+0
result = left+"0"*(right+pointIndex-len(left))
else: #否则在数值中间找到对的位置插入点
result = left[:right+pointIndex] + "." + left[right+pointIndex:]
else:
if right<0: #左移确保指数不为零,第一位移动很重要,剩余位都是插零了
result = "0."+'0'*(-pointIndex-right)+left
else:
result = left
if string[0] == '-':
print('-'+result)
else:
print(result)
except Exception:
pass
scientific_num = input()
# 小数点的下标
point_index = scientific_num.find('.')
# E的下标
e_index = scientific_num.find('E')
# 幂指数
index = int(scientific_num[e_index+2:])
# 小数位数
decimal_num = e_index-1-point_index
# 去掉小数点后的数值
num = scientific_num[1:e_index].replace('.', '')
# 分为两种情况讨论,一种是正数,一种是负数,通过小数点的移动来得出普通数
if scientific_num[e_index+1] == '+':
# 需要在后面补全0的情况
if decimal_num <= index:
ordinary_num = num + '0'*(index-decimal_num)
# 不需要补0的情况
else:
ordinary_num = num[:index+1] + '.' + num[index+1:]
else:
ordinary_num = '0.' + '0'*(index-1) + num
if scientific_num[0] == '-':
ordinary_num = '-' + ordinary_num
print(ordinary_num)