美文网首页
1024 科学计数法 (20分)(Python)

1024 科学计数法 (20分)(Python)

作者: 爱折腾的程序猿 | 来源:发表于2020-05-29 17:15 被阅读0次

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

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

    输入格式:

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

    输出格式:

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

    输入样例 1:

    +1.23400E-03
    

    输出样例 1:

    0.00123400
    

    输入样例 2:

    -1.2E+10
    

    输出样例 2:

    -12000000000
    

    代码实现:

    import re
    A = input()
    result = ''
    rr = re.match('([+-])([1-9].[0-9]+)E([+-])([0-9]+)',A)
    if rr.group(3) == '+':
        if rr.group(4) == '0':
            result = rr.group(1) + rr.group(2)
        else:
            if len(rr.group(2))-2 < int(rr.group(4)):
                s = rr.group(2).ljust(len(rr.group(2))+int(rr.group(4))-1,'0')
                result = rr.group(1) + s.replace('.','')
            elif len(rr.group(2))-2 == int(rr.group(4)):
                ll = list(rr.group(2).replace('.', ''))
                result = rr.group(1) + ''.join(ll)
            else:
                ll = list(rr.group(2).replace('.', ''))
                ll.insert(int(rr.group(4))+1,'.')
                result = rr.group(1) + ''.join(ll)
    else:
        if rr.group(4) == '0':
            result = rr.group(1) + rr.group(2)
        else:
            s = rr.group(2).rjust(len(rr.group(2)) + int(rr.group(4)), '0').replace('.','')
            ll = list(s)
            ll.insert(1,'.')
            result = rr.group(1) + ''.join(ll)
    print(result.replace('+',''))
    

    相关文章

      网友评论

          本文标题:1024 科学计数法 (20分)(Python)

          本文链接:https://www.haomeiwen.com/subject/xjawahtx.html