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

如何实现数字格式化:小数点后3个零后的连续零用下标计数显示

自定义小数格式化实现方案

实现逻辑

处理逻辑完全匹配需求规则,步骤如下:

  • 先把输入数字转成无科学计数法、无末尾无效零的字符串,避免浮点数精度、科学计数法干扰匹配
  • 用正则匹配小数点后、首个非0数字前的连续0序列:
    • 如果匹配不到(比如是整数、小数部分开头没有连续0),直接返回原数字字符串
    • 如果连续0的数量小于3,不做处理,返回原格式
    • 如果连续0数量≥3,把连续0的个数转成Unicode下标字符,按格式拼接为0.0<下标个数><首个非0数字><剩余小数部分>

可直接运行的JS实现

function formatCustomNumber(num) {
  // 转定点数字符串,去掉末尾无效0
  const numStr = num.toFixed(20).replace(/\.?0+$/, '');
  // 捕获小数点后连续0、首个非0开头的剩余小数段
  const matchGroup = numStr.match(/^0\.(0+)([1-9]\d*)$/);
  if (!matchGroup) return numStr;

  const zeroLength = matchGroup[1].length;
  const decimalRest = matchGroup[2];
  if (zeroLength < 3) return numStr;

  // 数字转对应Unicode下标,支持两位及以上的零计数
  const subscriptChars = ['₀','₁','₂','₃','₄','₅','₆','₇','₈','₉'];
  const countSubscript = String(zeroLength)
    .split('')
    .map(n => subscriptChars[Number(n)])
    .join('');

  return `0.0${countSubscript}${decimalRest[0]}${decimalRest.slice(1)}`;
}

测试用例结果

调用方法对应输出完全符合示例要求:

formatCustomNumber(0.000001)   → 0.0₅1
formatCustomNumber(0.0000003)  → 0.0₆3
formatCustomNumber(0.001)      → 0.001
formatCustomNumber(0.00001234) → 0.0₄1234

适配提示

  • 如果用其他语言实现,逻辑完全通用,只需要替换对应语言的正则、数字转字符串、下标字符映射逻辑即可
  • 整数部分非0的数字(比如123.0004)默认不会触发这套格式化规则,如果需要支持这类数字的小数部分处理,调整正则匹配范围即可
  • Unicode下标字符兼容所有主流展示环境,不需要额外加HTML标签或者样式就能正常显示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:18:22