You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现函数获取小数点后非尾随零的有效小数位数?

计算有效小数位数(去除尾随零后的位数)

需求明确:给定一个带小数的数值,返回去除所有尾随零后剩余的小数位数,几个典型示例:

  • 输入123.54054000 → 返回5
  • 输入1.010 → 返回2
  • 输入1.7000 → 返回1
  • 输入1.123405607000 → 返回9

实现思路

  1. 将数值转为字符串,避免科学计数法干扰;
  2. 拆分整数部分与小数部分,无小数部分直接返回0;
  3. 剔除小数部分末尾的所有零,剩余长度即为有效小数位数。

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) → 输出 5
  • get_significant_decimal_places(1.010) → 输出 2
  • get_significant_decimal_places(1.7000) → 输出 1
  • get_significant_decimal_places(1.123405607000) → 输出 9
  • get_significant_decimal_places(5) → 输出 0

注意事项

  • 格式化时保留15位小数是为了覆盖大部分常规数值的精度需求,避免丢失有效小数位;
  • 处理了整数输入的情况,此时有效小数位数为0。

内容的提问来源于stack exchange,提问作者Rami Dhouib

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 15:48:12