技术实践
在 JavaScript 中格式化数字
如果您的应用程序是在其他地区服务的,则可以使用 Intl API 为您解决这些问题,甚至不需要插入另一个依赖项

所以,当我说我们要格式化数字时,我的意思是: 在不同的文化中,数字的表示方式不同。例如,在巴西,我们最常用的表示数字的方法是这样的: 1.234.567,89。逗号是小数点,句号是数以千计的分隔符。在其他文化中,这些被切换,或者千分隔不使用。如果您的应用程序是在其他地区服务的,则可以使用 Intl API 为您解决这些问题,甚至不需要插入另一个依赖项
js
const myNumber = 1234657.89;
const formatter = new Intl.NumberFormat('pt-BR');
console.log(formatter.format(myNumber)); // 1.234.567,89
const formatterUS = new Intl.NumberFormat('en-US');
console.log(formatter.format(myNumber)); // 1,234,567.89
js
onst myNumber = 1234567.89;
let formatter = new Intl.NumberFormat('pt-BR', {
style: 'currency',
currency: 'BRL'
});
console.log(formatter.format(myNumber)); // R$ 1.234.567,89
formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD'
});
console.log(formatter.format(myNumber)); // $ 1,234,567.89
formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
currencyDisplay: 'code' // default: 'symbol'
});
console.log(formatter.format(myNumber)); // USD 1,234,567.89
formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
currencyDisplay: 'name'
});
console.log(formatter.format(myNumber)); // 1,234,567.89 US dollars
js
const myNumber = -1234567.89; // notice the negative sign
const formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
currencySign: 'accounting'
});
console.log(formatter.format(myNumber)); // ($1,234,567.89)
js
const myNumber = 1234567.00;
formatter = new Intl.NumberFormat('en-US');
console.log(formatter.format(myNumber)); // 1,234,567
formatter = new Intl.NumberFormat('en-US', {
minimumFractionDigits: 2
});
console.log(formatter.format(myNumber)); // 1,234,567.00
formatter = new Intl.NumberFormat('en-US', {
maximumFractionDigits: 3
});
const myNumber2 = 1234567.891011
console.log(formatter.format(myNumber2)); // 1,234,567.891
js
formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
notation: 'standard' // default
});
console.log(formatter.format(myNumber)); // $1,234,567.89
formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
notation: 'scientific'
});
console.log(formatter.format(myNumber)); // $1,23E6
formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
notation: 'engineering'
});
console.log(formatter.format(myNumber)); // $1,23E6
formatter = new Intl.NumberFormat('en-US', {
style: 'currency',
currency: 'USD',
notation: 'compact'
});
console.log(formatter.format(myNumber)); // $1.2M