在python中给出Decimal
个数字,如何找到小数点后的位数?
assert digits(Decimal('1.2345')) == 4
assert digits(Decimal('1000')) == 0
assert digits(Decimal('1.00')) == 2
assert digits(Decimal('1E+5')) == 0
assert digits(Decimal('1.2E+5')) == 0
答案 0 :(得分:4)
经过一些实验,这似乎工作正常:
def digits(n):
return max(0,-n.as_tuple().exponent)
答案 1 :(得分:2)
我将概述一种可能的算法,假设你以字符串开头。
'E'
或字符串末尾之间的数字。如果没有小数点,则计数为零。'E'
后面的值并转换为整数。如果没有'E'
,则为零。'2E-2'
会有两个小数位,'1.2E+5'
没有,而相当愚蠢的'0.02E2'
则没有。