代码如下:
const number = 123456789.45654;
number.toLocaleString('zh', { // "123,456,789.46"
maximumFractionDigits: 2,
})
Number.prototype.toLocaleString()
numObj.toLocaleString([locales [, options]])
style
- “decimal” 用于纯数字格式, 默认值;
- “currency” 用于货币格式;
- “percent” 用于百分比格式;
- “unit” 用于单位格式
const num = 10000.888888;
num.toLocaleString('zh', { style: 'decimal' }); // "10,000.889"
num.toLocaleString('zh', { style: 'percent' }); // "1,000,089%"
num.toLocaleString('zh', { style: 'currency' }); // Uncaught TypeError: Currency code is required with currency style.
num.toLocaleString('zh', { style: 'unit'}); // Invalid unit argument for Number.prototype.toLocaleString() ''
style为decimal时,结果是纯数字格式,并且默认四舍五入保留了3位小数;
style为percent时,结果是百分比格式,并且默认四舍五入保留了2位小数;
style为currency时,报错了,因为缺少currency属性,加上之后看一下:
num.toLocaleString('zh', { style: 'currency', currency: 'CNY' }); // "¥10,000.89"
num.toLocaleString('zh', { style: 'currency', currency: 'USD' }); // "US$10,000.89"
num.toLocaleString('zh', { style: 'currency', currency: 'HKD' }); // "HK$10,000.89"
可以看出style为currenty,会在前面加上对应的钱币符号,并四舍五入保留两位小数。
style为unit时,也报错了,unit不能为'',加上之后看一下:
num.toLocaleString('zh', { style: 'unit', unit: 'second'}); // "10,000.889秒"
num.toLocaleString('zh', { style: 'unit', unit: 'mile'}); // "10,000.889英里"
可以看出style为unit,会在后面加上对应的单位,并四舍五入保留三位小数。
useGrouping
useGrouping:是否使用分组分隔符(即每三位一个逗号),默认为true,设置为false可以去掉逗号分隔符;
num.toLocaleString('zh', { style: 'currency', currency: 'CNY', useGrouping: false }); // "¥10000.89"
minimumIntegerDigits
使用的整数数字的最小数目(1 - 21,超过21位会转换为科学计数法),不够会在前面补零,默认为1
minimumFractionDigits
使用的小数位数的最小数目.可能的值是从 0 到 20
maximumFractionDigits
使用的小数位数的最大数目。可能的值是从 0 到 20
minimumSignificantDigits
使用的有效数字的最小数目。可能的值是从1到21;默认值是1
maximumSignificantDigits
使用的有效数字的最大数量。可能的值是从1到21;默认是 21
注意: 如果定义了 minimumSignificantDigits 或 maximumSignificantDigits 的任意一个属性,则忽略前三个的设置; 同时设置同组min和max时,如果min大于max的值会报错
num.toLocaleString('zh', {useGrouping: false, minimumIntegerDigits: 7}); // "0010000.889"
num.toLocaleString('zh', {useGrouping: false, minimumFractionDigits: 5}); // "10000.88889"
num.toLocaleString('zh', {useGrouping: false, maximumFractionDigits: 5}); // "10000.88888"
num.toLocaleString('zh', {useGrouping: false, minimumSignificantDigits: 13}); // "10000.88888800"
num.toLocaleString('zh', {useGrouping: false, maximumSignificantDigits: 7}); // "10000.89"
num.toLocaleString('zh', {useGrouping: false, maximumSignificantDigits: 3}); // "10000"
个人常用的就这些配置项,还有更多配置请到MDN查看。