如何从小数位丢弃无用的零数字?

时间:2018-10-05 12:44:23

标签: python

我是Python的新手,我对十进制库有疑问。

有些问题要求必须丢弃位于最后一个非零数字后面的小数点后的所有零。UVA11821

例如0.1230000是非法答案,应将其转换为0.123

我打算用python和十进制来做这个问题,但是我不能做转换工作。 这是我的代码。

from decimal import *
a=eval(input())
con=getcontext()
con.prec=100
for i in range(0,a):
        summ=Decimal('0')
        while 1:
                num=Decimal(input())
                if num==0:
                        break;
                summ=summ+num
        print(summ)

2 个答案:

答案 0 :(得分:6)

您尝试过normalize吗?

  

通过去除最右边的尾随零并将所有等于Decimal('0')的结果转换为Decimal('0e0')来标准化数字。

它应该适合您的情况。

import decimal
print(decimal.Decimal('0.1230000').normalize())
0.123

答案 1 :(得分:-1)

一个非常基本的可能性是处理str输出。

s = '0.1230000'
if '.' in s:
    while len(s) > 0 and s[-1] == '0':
        s = s[:-1]

它不是很优雅,但是可以做到。但是,如果您之后需要将其转换回Decimal实例,则需要进行更多工作。

编辑:添加了基本检查以仅删除小数点后的零。