使用toLocaleString()方法把数值转化为金额格式

442 阅读1分钟

cd9be4599ff045a2!400x400.jpg

屁话不多说先上代码,这是一个简单的用toLocaleString把number转为金额格式

function initCommaMoney(money, defaultText = '0.00') {
  money = parseFloat(money);
  if (isNaN(money)) return defaultText;
  let formattedNum = money.toLocaleString(undefined, {
    minimumFractionDigits: 2,
    maximumFractionDigits: 2
  });
  return formattedNum;
}
console.log(initCommaMoney(1000)) // 1,000.00
console.log(initCommaMoney(0))  // 0.00
console.log(initCommaMoney(0.57777)) // 0.58
console.log(initCommaMoney(-0.57777)) // -0.58

toLocaleStringlocales 和 options 参数: locales 和 options 参数使程序能够指定使用哪种语言格式化规则,允许定制该方法的行为。(来自MDN)

optionsstyle 表示格式化时使用的样式,默认值是 decimal 也就是纯数字,也可为 percent 百分比显示与 currency 货币显示。值为 currency 时必须同时指定 options 中的 currencyDisplay 属性,否则会有问题哦,更详细的了解请 点我一下

下面是小编常用的options一些配置和用法

maximumFractionDigits:最大位数
minimumFractionDigits:最小位数
minimumIntegerDigits:整数位最小位数
maximumSignificantDigits:最大有效位数
minimumSignificantDigits:最小有效位数
useGrouping: 去掉分隔符

let num = 2333.3;
num.toLocaleString("zh", { minimumIntegerDigits: 5 }); //02,333.3//如果不想有分隔符,可以指定useGrouping为false
num.toLocaleString('zh', { minimumIntegerDigits: 5, useGrouping: false }); //02333.3
num.toLocaleString('zh', { minimumFractionDigits: 2, useGrouping: false }); //2333.30
num = 666.666;
num.toLocaleString("zh", { maximumFractionDigits: 2, useGrouping: false }); //666.67

const num = 1234.5;
num.toLocaleString('zh', { minimumSignificantDigits: 6, useGrouping: false });  //1234.50
num.toLocaleString('zh', { maximumSignificantDigits: 4, useGrouping: false });