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

如何在JavaScript中灵活转换多格式货币为数字?

实现灵活的JavaScript货币转数字方法

针对你需要处理多种货币格式转数字的需求,这里提供一个能识别不同千分位、小数点分隔符以及货币符号的函数:

function convertCurrencyToNumber(input) {
  // 输入已是数字,直接返回(保留两位小数对齐示例输出)
  if (typeof input === 'number') {
    return Number(input.toFixed(2));
  }

  // 过滤掉所有非数字、逗号、点的字符(比如$这类货币符号)
  const cleanedInput = input.replace(/[^0-9.,]/g, '');

  // 通过最后一个分隔符的位置判断格式类型
  const lastCommaPos = cleanedInput.lastIndexOf(',');
  const lastDotPos = cleanedInput.lastIndexOf('.');

  let processedStr;
  if (lastCommaPos > lastDotPos) {
    // 逗号是小数点,点是千分位分隔符(如1.000,50)
    processedStr = cleanedInput.replace(/\./g, '').replace(',', '.');
  } else {
    // 点是小数点,逗号是千分位分隔符(如1,000.50)
    processedStr = cleanedInput.replace(/,/g, '');
  }

  // 转成数字并保留两位小数
  return Number(parseFloat(processedStr).toFixed(2));
}

测试示例

  • convertCurrencyToNumber("1.000,50") → 返回 1000.50
  • convertCurrencyToNumber("$1.000,50") → 返回 1000.50
  • convertCurrencyToNumber("1,000.50") → 返回 1000.50
  • convertCurrencyToNumber("$1,000.50") → 返回 1000.50
  • convertCurrencyToNumber(1000.50) → 返回 1000.50

逻辑说明

  1. 先判断输入类型,数字直接处理后返回;
  2. 字符串先清理掉货币符号等无关字符,只保留数字、逗号和点;
  3. 通过最后一个逗号和点的位置,区分两种常见的货币格式:
    • 若最后一个逗号在点之后,说明逗号是小数点,点是千分位分隔符,先去掉所有点,再把逗号换成标准小数点;
    • 反之则去掉所有逗号,保留点作为小数点;
  4. 最后转成数字并保留两位小数,和期望输出格式一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 10:20:09