科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][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)