JS格式化货币

在开发和金额有关的网站应用时,货币格式化是一个常见的需求。无论是电商网站的商品价格,还是财务系统的金额显示,我们都需要将数值以规范的货币格式呈现给用户。比如,将 1234567.89 格式化为 1,234,567.89,这样不仅更美观,也更容易阅读。

下面是一个简单而实用的 JavaScript 函数,可以帮助你轻松实现货币格式化。这个函数会将数值修约为两位小数,并添加千位分隔符,确保金额显示的规范性和一致性。

代码实现:

//language:js
// 格式化货币
function formatCurrency(value) {
    // 先将数值修约为两位小数
    let rounded = Math.round(value * 100) / 100;
    // 将数值转换为字符串
    let valueString = rounded.toString();
    
    // 检查是否有小数点
    let decimalPos = valueString.indexOf('.');
    // 如果没有小数点,添加".00"
    if (decimalPos === -1) {
        valueString += ".00";
    } else {
        // 否则, 确保小数部分至少有两位数字
        let decimalPart = valueString.substring(decimalPos + 1);
        if (decimalPart.length === 1) {
            // 如果只有一位小数, 添加一个0
            valueString += "0";
        }
    }
    
    // 添加千位分隔符
    let parts = valueString.split('.');
    parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    
    return parts.join(".");
}

代码解析

  1. 修约数值
    • 使用 Math.round(value * 100) / 100 将数值修约为两位小数。这样可以确保金额的精度符合货币显示的要求。
  2. 处理小数部分
    • 将数值转换为字符串后,检查是否存在小数点。
    • 如果没有小数点,直接添加 .00,确保金额始终显示两位小数。
    • 如果小数点后只有一位数字,则补一个 0,例如将 123.5 转换为 123.50
  3. 添加千位分隔符
    • 使用正则表达式 /\B(?=(\d{3})+(?!\d))/g 在整数部分添加千位分隔符(逗号)。
    • 例如,将 1234567 转换为 1,234,567
  4. 拼接结果
    • 最后将整数部分和小数部分拼接起来,返回格式化后的字符串。

使用示例:

console.log(formatCurrency(1234567.89)); // 输出: "1,234,567.89"
console.log(formatCurrency(1234.5));      // 输出: "1,234.50"
console.log(formatCurrency(1234));       // 输出: "1,234.00"

注意:

如果你需要更复杂的货币格式化功能(例如支持多国货币、自定义符号等),可以考虑使用现成的库,比如 Intl.NumberFormat,它提供了更强大的国际化支持。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注