📜  tolocalestring javascript 货币固定 2 个小数位 - Javascript (1)

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

JavaScript toLocaleString货币固定2个小数位

在Web开发的过程中,变量会经常涉及到货币。如果你需要将一个数字转换为货币格式,JavaScript的toLocaleString()方法是非常方便的:

const number = 123456.789;
const formattedNumber = number.toLocaleString();
console.log(formattedNumber); // "123,456.789"

但是,如果你只需要精确到2个小数位,toLocaleString()方法实际上不太适用。例如:

const number = 123456.789;
const formattedNumber = number.toLocaleString('en-US', {
  style: 'currency',
  currency: 'USD',
});
console.log(formattedNumber); // "$123,456.79"

对于大多数情况,这应该足够了。但是,如果你需要对所有的货币均精确到2个小数位,有两种方法可以实现。

第一种方法是在调用toLocaleString()方法时,强制精度:

const number = 123456.789;
const formattedNumber = number.toLocaleString('en-US', {
  style: 'currency',
  currency: 'USD',
  minimumFractionDigits: 2,
  maximumFractionDigits: 2,
});
console.log(formattedNumber); // "$123,456.79"

这里的两个选项,minimumFractionDigits和maximumFractionDigits,都被设置为2,这意味着数字将在两个小数位上四舍五入。

第二种方法是创建一个处理货币的工具函数:

function formatCurrency(amount) {
  const formatter = new Intl.NumberFormat('en-US', {
    style: 'currency',
    currency: 'USD',
    minimumFractionDigits: 2,
    maximumFractionDigits: 2,
  });

  return formatter.format(amount);
}

const number = 123456.789;
const formattedNumber = formatCurrency(number);
console.log(formattedNumber); // "$123,456.79"

这个函数采用一个数字作为参数,并使用一个Intl.NumberFormat对象来格式化它。这种方法的好处是,你只需要在一个地方设置货币的格式选项,并且不需要重复引用它们。

在任何情况下,你都应该注意toLocalString()方法返回的值,是否符合你的期望。它会考虑到不同国家的货币格式,因此你必须仔细选择你的选项。