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

2021-11-23 / 0 评论 / 449 阅读
温馨提示:
本文最后更新于2021-11-23,已超过半年没有更新,若内容或图片失效,请留言反馈。

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

  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

评论一下?

OωO
取消