屁话不多说先上代码,这是一个简单的用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
toLocaleString有locales 和 options 参数:
locales 和 options 参数使程序能够指定使用哪种语言格式化规则,允许定制该方法的行为。(来自MDN)
options中style 表示格式化时使用的样式,默认值是 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 });