我将如何执行以下操作:
>>> num_decimal_places('3.2220')
3 # exclude zero-padding
>>> num_decimal_places('3.1')
1
>>> num_decimal_places('4')
0
Run Code Online (Sandbox Code Playgroud)
我正在考虑这样做:
len((str(number) if '.' in str(number) else str(number) + '.').rstrip('0').split('.')[-1])
Run Code Online (Sandbox Code Playgroud)
还有另一种更简单的方法吗?
您可以使用正则表达式来解析value、捕获十进制数字并计算匹配的长度(如果有):
import re
def num_decimal_places(value):
m = re.match(r"^[0-9]*\.([1-9]([0-9]*[1-9])?)0*$", value)
return len(m.group(1)) if m is not None else 0
Run Code Online (Sandbox Code Playgroud)
这比用 multiple 分割字符串要少一些“原始” if else,但不确定是否更简单或更易读。
| 归档时间: |
|
| 查看次数: |
3014 次 |
| 最近记录: |