首页 教程 正文
  • 本文约371字,阅读需2分钟
  • 1180
  • 22

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

评论