📜  货币格式 - Javascript (1)

📅  最后修改于: 2023-12-03 15:41:49.452000             🧑  作者: Mango

货币格式 - JavaScript

在 JavaScript 中,对货币格式进行处理是非常常见的任务。让我们来看一些方法可以将数字格式化为货币格式。

toLocaleString() 方法

JavaScript 内置的 toLocaleString() 方法可将数字转换为带有千位分隔符和小数点的字符串。

const num = 1000.99;
console.log(num.toLocaleString('en-US', { style: 'currency', currency: 'USD' }));
// 输出:"$1,000.99"
console.log(num.toLocaleString('zh-CN', { style: 'currency', currency: 'CNY' }));
// 输出:"¥1,000.99"

该方法有两个参数:语言和选项。语言参数可选,选项参数是必需的,因为它包含有关数字格式的详细信息。

如果我们不想使用硬编码的选项对象,而是使用从用户输入的数据中动态创建选项,我们可以按如下方式编写代码:

const num = 1000.99;
const currencyCode = 'USD'; // 也可以从用户输入中得到值
const options = { style: 'currency', currency: currencyCode };
console.log(num.toLocaleString('en-US', options));
使用纯 JavaScript 格式化货币

虽然 toLocaleString() 方法很方便,但也有一些限制。例如,我们无法仅显示小数点后两位,或者自定义千位分隔符。

在这种情况下,我们可以编写自己的函数来格式化货币,如下所示:

function formatCurrency(num, options = {}) {
  const { prefix = '$', suffix = '', decimals = 2, separator = ',', decimalSeparator = '.' } = options;
  
  const formatted = num.toFixed(decimals).replace(/\d(?=(\d{3})+\.)/g, `$&${separator}`);
  
  return `${prefix}${formatted}${suffix}`;
}

const num = 1000.99;
console.log(formatCurrency(num)); // 输出:$1,000.99
console.log(formatCurrency(num, { prefix: '¥', separator: ',' })); // 输出:¥1,000.99

在上面的函数中,我们使用了 ES6 的 “默认参数”功能,以便在没有传递选项对象的情况下使用默认值。该函数的工作原理如下:

  1. 使用 toFixed() 方法来获得小数点后指定位数的数字字符串。
  2. 使用正则表达式将数字字符串中的逗号插入千位分隔符。
  3. 将前缀和后缀添加到最终字符串中。
总结

以上是一些将数字格式化为货币格式的方法。虽然 toLocaleString() 方法很方便,但如果您需要更多自定义内容,建议编写自己的函数。