«

Python3 获取小数位数 删除小数尾部0

时间:2021-11-23 17:12     作者:苏慕白     分类: 教程


今天做获取小数位数的时候遇到了两个坑

  1. 浮点数 尾部0也计入了
  2. 用float 或者 format 把尾部0清除 太小的数会变成科学计数

下面我的解决方法

import re

def WeiShu(val):
    val_str = str(val)
    if "." not in val_str:
        return 0

    #删除尾部0,float不行,会科学计数
    rgx = re.compile(r'(?:(\.)|(\.\d*?[1-9]\d*?))0+(?=\b|[^0-9])')
    val_str = rgx.sub(r'\2', val_str)

    digits_location = val_str.find('.')
    if digits_location:
        return len(val_str[digits_location + 1:])

    return 0

a = '0.00000010'
print(WeiShu(a))

结果:7