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

Node.js中如何将1k/1m等缩写数字转换为数值?

Node.js: 转换带后缀的缩写数字为数值

自定义代码实现

下面是一个轻量的自定义函数,支持解析k(千)、m(百万)、b(十亿)后缀的缩写数字,同时兼容小数和大小写后缀:

function parseAbbreviatedNumber(input) {
  const multiplierMap = {
    k: 10 ** 3,
    m: 10 ** 6,
    b: 10 ** 9
  };

  // 匹配数字部分和后缀(支持整数、小数,后缀不区分大小写)
  const result = input.match(/^(\d+(?:\.\d+)?)([kmb])$/i);
  
  if (!result) {
    // 无匹配后缀时,尝试直接解析为数字(可根据需求改为抛出错误)
    return parseFloat(input);
  }

  const numericPart = parseFloat(result[1]);
  const suffix = result[2].toLowerCase();

  return numericPart * multiplierMap[suffix];
}

// 测试示例
console.log(parseAbbreviatedNumber('1k'));      // 1000
console.log(parseAbbreviatedNumber('100k'));    // 100000
console.log(parseAbbreviatedNumber('1m'));      // 1000000
console.log(parseAbbreviatedNumber('1b'));      // 1000000000
console.log(parseAbbreviatedNumber('3.2m'));    // 3200000
console.log(parseAbbreviatedNumber('5K'));      // 5000(大小写兼容)

如果需要支持更多后缀(比如t代表万亿),只需要在multiplierMap中添加对应的键值对即可。

可用的npm包

如果不想手动实现,可以尝试parse-human-number包,它支持解析这类带后缀的数字:

安装:

npm install parse-human-number

使用示例:

const parseHumanNumber = require('parse-human-number');

console.log(parseHumanNumber('1k'));    // 1000
console.log(parseHumanNumber('100k'));  // 100000
console.log(parseHumanNumber('1m'));    // 1000000

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 14:30:47