如何实现函数获取小数点后非尾随零的有效小数位数?
计算有效小数位数(去除尾随零后的位数)
需求明确:给定一个带小数的数值,返回去除所有尾随零后剩余的小数位数,几个典型示例:
- 输入123.54054000 → 返回5
- 输入1.010 → 返回2
- 输入1.7000 → 返回1
- 输入1.123405607000 → 返回9
实现思路
- 将数值转为字符串,避免科学计数法干扰;
- 拆分整数部分与小数部分,无小数部分直接返回0;
- 剔除小数部分末尾的所有零,剩余长度即为有效小数位数。
Python 代码实现
def get_significant_decimal_places(num): # 格式化数值为字符串,避免科学计数法,保留足够精度 formatted_str = "{0:.15f}".format(num) # 先去掉末尾的零,再去掉可能残留的小数点(比如数值是整数的情况) cleaned_str = formatted_str.rstrip('0').rstrip('.') # 拆分整数和小数部分 parts = cleaned_str.split('.') # 没有小数部分则返回0,否则返回小数部分的长度 return len(parts[1]) if len(parts) > 1 else 0
测试验证
get_significant_decimal_places(123.54054000)→ 输出5get_significant_decimal_places(1.010)→ 输出2get_significant_decimal_places(1.7000)→ 输出1get_significant_decimal_places(1.123405607000)→ 输出9get_significant_decimal_places(5)→ 输出0
注意事项
- 格式化时保留15位小数是为了覆盖大部分常规数值的精度需求,避免丢失有效小数位;
- 处理了整数输入的情况,此时有效小数位数为0。
内容的提问来源于stack exchange,提问作者Rami Dhouib
相关产品推荐
相关产品推荐

