什么是千位分隔符
国际数字通用习惯,每隔三位数字加一个逗号。究其原因是因为英文里没有“万”、“亿”,只有“百万(million)”、“十亿(billion)”,因此他们发明了这种千位分隔符法,用于快速分辨大型数值:
1,000 one thousand 一千
1,000,000 one million 一百万
1,000,000,000 one billion 十亿
JS实现千位运算符的方法
正则表达式法
/**
* 千位分隔符
*
* @param {number} num 数字
*
* @return {string} 19,871,017
*/
function T_THOUSAND_SEPARATOR_NUM(num) {
if (typeof num === 'number') {
return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
} else {
console.warn('工具方法类警告: 输入参数并非数字类型');
return num;
};
};
Number.prototype.toLocaleString()
其中 toLocaleString()
方法返回这个数字在特定语言环境下的表示字符串。
参考:Number.prototype.toLocaleString() – JavaScript | MDN
/**
* 千位分隔符
*
* @param {number} num 数字
*
* @return {string} 19,871,017
*/
function T_THOUSAND_SEPARATOR_NUM(num) {
if (typeof num === 'number') {
return num.toLocaleString('en-US');
} else {
console.warn('工具方法类警告: 输入参数并非数字类型');
return num;
};
};
Intl.NumberFormat
Intl.NumberFormat
是对语言敏感的格式化数字类的构造器类
参考资料:Intl.NumberFormat – JavaScript | MDN
/**
* 千位分隔符
*
* @param {number} num 数字
*
* @return {string} 19,871,017
*/
function T_THOUSAND_SEPARATOR_NUM(num) {
if (typeof num === 'number') {
let nf = new Intl.NumberFormat('en-US');
return nf.format(num);
} else {
console.warn('工具方法类警告: 输入参数并非数字类型');
return num;
};
};
HTML语义化
在屏幕阅读器的无障碍访问下,如果展现的数字为“19871017”,则屏幕阅读器会读出“一九八七一零一七”,而展现的数字为“19,871,017”时,则会读出“一千九百八十七万一千零一十七”。