在python中查找十进制数的小数部分的位数

use*_*478 5 python numbers decimal

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
Run Code Online (Sandbox Code Playgroud)

use*_*478 4

经过一些实验,这似乎工作正常:

def digits(n):
    return max(0,-n.as_tuple().exponent)
Run Code Online (Sandbox Code Playgroud)