📜  js 货币格式 br - Javascript (1)

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

JS货币格式br - Javascript

在Web开发中,经常需要将数字格式化为货币格式。Javascript提供了一些内置方法,可以帮助我们实现这一目标。

1. toLocaleString()

toLocaleString() 是 javascript 内置的用于格式化数字的方法。它可以将数字转换为本地格式,以便于阅读和显示。我们可以使用它将数字格式化为货币格式。

const amount = 30000.50;
const formattedAmount = amount.toLocaleString("en-US", {style: "currency", currency: "USD"}) // "$30,000.50"

这段代码将数字 30000.50 格式化为美元,并将结果储存在变量 formattedAmount 中。

请注意,如果您要格式化的数字是 NaNInfinity-InfinitytoLocaleString() 将会抛出 RangeError 错误。因此,在使用 toLocaleString() 时,您应该做好异常处理。

2. 自定义函数

如果您想自定义格式化逻辑,可以使用自定义函数。

function formatMoney(amount, decimalCount = 2, decimal = ".", thousands = ",") {
  try {
    decimalCount = Math.abs(decimalCount);
    decimalCount = isNaN(decimalCount) ? 2 : decimalCount;

    const negativeSign = amount < 0 ? "-" : "";

    let i = parseInt(amount = Math.abs(Number(amount) || 0).toFixed(decimalCount)).toString();
    let j = (i.length > 3) ? i.length % 3 : 0;

    return negativeSign + (j ? i.substr(0, j) + thousands : '') + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousands) + (decimalCount ? decimal + Math.abs(amount - i).toFixed(decimalCount).slice(2) : "");
  } catch (e) {
    console.log(e)
  }
}

这个函数接受四个参数:

  • amount - 必需,要格式化的数字。
  • decimalCount - 可选,小数点后保留的位数,默认值为 2
  • decimal - 可选,小数点的分隔符,默认值为 "."
  • thousands - 可选,千位分隔符,默认值为 ","

下面是一个使用自定义函数的例子。

const amount = 30000.50;
const formattedAmount = formatMoney(amount,2,"."," "); // "30 000.50"

在这个例子中,我们将数字 30000.50 格式化为带有空格的货币格式,并将结果储存在变量 formattedAmount 中。

3. 使用库

在开发中,如果频繁使用格式化货币,为避免重复造轮子,我们可以使用一些优秀的Javascript库,如 Numeral.jsaccounting.js

这里我们以 Numeral.js 为例,先安装库:

npm install numeral --save
import numeral from 'numeral'

const amount = 30000.50;
const formattedAmount = numeral(amount).format('$0,0.00');

这段代码将数字 30000.50 格式化为美元,并将结果储存在变量 formattedAmount 中。在这个例子中,格式化字符 $0,0.00 用来表示美元格式。

Numeral.js 具有丰富的格式化选项及插件,便于我们快速定制及扩展,更多详细信息请参考官方文档。

结论

这里介绍了三种实现货币格式化的方法。每种方法都有其特殊的应用场景,因此我们应该根据实际情况选择最适合的方法。