📅  最后修改于: 2023-12-03 15:41:49.452000             🧑  作者: Mango
在 JavaScript 中,对货币格式进行处理是非常常见的任务。让我们来看一些方法可以将数字格式化为货币格式。
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));
虽然 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 的 “默认参数”功能,以便在没有传递选项对象的情况下使用默认值。该函数的工作原理如下:
toFixed()
方法来获得小数点后指定位数的数字字符串。以上是一些将数字格式化为货币格式的方法。虽然 toLocaleString()
方法很方便,但如果您需要更多自定义内容,建议编写自己的函数。