Python基础练习 1024 科学计数法 (20 分)

188 阅读2分钟

Python基础练习 1024 科学计数法 (20 分)

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

问题描述

  科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[±][1-9].[0-9]+E[±][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该数字及其指数部分的正负号即使对正数也必定明确给出。

  现以科学计数法的格式给出实数 A,请编写程序按普通数字表示法输出 A,并保证所有有效位都被保留。

输入输出

  • 输入格式

  每个输入包含 1 个测试用例,即一个以科学计数法表示的实数 A。该数字的存储长度不超过 9999 字节,且其指数的绝对值不超过 9999。

  • 输出格式

  对每个测试用例,在一行中按普通数字表示法输出 A,并保证所有有效位都被保留,包括末尾的 0。

  • 样例输入

  输入样例 1:+1.23400E-03

  输入样例 2:-1.2E+10

  • 样例输出   输出样例 1:0.00123400

  输出样例 2:-12000000000

Python版本 代码如下

a, b = input().split("E")
#正负号
f = a[0]
#整数,小数
Int, Inde = a[1:].split(".")
#小数位数
len_inde = len(Inde)
#指数
on = int(b[1:])
#指数符号
on_f = b[0]

if on_f=='-': #判断指数的正负号,负号则加"0."
    on_inde ="0."+"0"*(on-1)
    res = on_inde+Int+Inde
else:
    length = len_inde-on#位数差
    if length<=0:#如果位数小于指数位数,右边补充0
        Inde = Inde.ljust(on,"0")
        res = Int+Inde
    else:#扩大位数
        Int = Int+Inde[:on]
        res = Int+"."+Inde[on:]
        
if f=="-":
    print(f+res)
else:
    print(res)

补充知识:

科学记数法是一种记数的方法。
把一个数表示成a10的n次幂相乘的形式(1≤|a|<10a不为分数形式,n为整数),这种记数法
叫做科学记数法。当需要标记或运算某个较大或较小且位数较多时,用科学记数法免去浪费很多空间和时间。