Python3 获取小数位数 删除小数尾部0
温馨提示:本文最后更新于2021年11月23日 17:12,若内容或图片失效,请在下方留言或联系博主。
今天做获取小数位数的时候遇到了两个坑
- 浮点数 尾部0也计入了
- 用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