我是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)
答案 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
实例,则需要进行更多工作。
编辑:添加了基本检查以仅删除小数点后的零。