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

如何使用JavaScript将1k、3k、7m等格式化数值转换为纯数字

实现格式化数值转纯数字的JavaScript方案

可以写一个通用函数处理这类带k/m/b后缀的格式化数值,核心逻辑是匹配后缀对应的倍率,将数值部分转换后乘以倍率即可:

核心实现代码

function parseFormattedNumber(str) {
  // 定义后缀与倍率的映射,支持大小写输入
  const multipliers = {
    k: 1000,
    m: 1000000,
    b: 1000000000
  };
  // 正则提取数字部分(整数/小数)和后缀,兼容无后缀的纯数字
  const match = str.trim().toLowerCase().match(/^(\d+\.?\d*)([kmb])?$/);
  
  if (!match) return NaN; // 匹配失败返回NaN
  
  const [, numStr, suffix] = match;
  const num = parseFloat(numStr);
  
  if (isNaN(num)) return NaN;
  
  // 有后缀则乘对应倍率,无后缀直接返回原数字
  return suffix ? num * multipliers[suffix] : num;
}

代码说明

  • 用toLowerCase()统一处理大小写,不管输入是1M还是1m都能识别
  • 正则表达式/^(\d+\.?\d*)([kmb])?$/可匹配两类内容:
    • 纯数字(比如123、45.67)
    • 带k/m/b后缀的格式化数值(比如100k、3.789m)
  • 匹配失败或数字部分无效时返回NaN,方便后续做错误处理

测试示例

代入你给出的测试值,运行结果如下:

console.log(parseFormattedNumber('1m'));      // 1000000
console.log(parseFormattedNumber('2m'));      // 2000000
console.log(parseFormattedNumber('3.789m'));  // 3789000
console.log(parseFormattedNumber('100k'));    // 100000
console.log(parseFormattedNumber('20k'));     // 20000
console.log(parseFormattedNumber('80.5b'));   // 80500000000
console.log(parseFormattedNumber('1k'));      // 1000
console.log(parseFormattedNumber('10.2m'));   // 10200000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 22:30:48