1. 使用 toLocaleString()
方法直接转
parseInt('2367892.2').toLocaleString() // 默认保留三位小数
Number(213146897896).toLocaleString() // 默认保留三位小数
该方法也可用来格式化时间
// 二十四小时制
new Date().toLocaleString() // '2023/1/11 14:23:31'
// 十二小时制
new Date().toLocaleString('chinese', {hour12:true}) // '2023/1/11 下午2:23:59'
2. 正则
function splitByReg3(str) {
var re= ;
return Number(str).replace(/\B(?=(\d{3})+(?!\d))/g, ",") // 推荐
// return Number(str).replace(/(\d{1,3})(?=(\d{3})+(?:$|\.))/g, "$1,") // .replace(/(\d)(?=(\d{3})+\.)/g, '$1,')
}
3. 字符串处理
function split3str(str) {
if (str == null && str.length == 0) return null
var newStr = []
var count = 0
var strDot = null // 字符串小数部分
if (str.indexOf('.') != -1) {
strDot = str.substring(str.indexOf('.'), str.length)
str = str.substring(0, str.indexOf('.'))
}
for (var i = str.length - 1; i >= 0; i--) {
if (count % 3 == 0 && count != 0) {
newStr.unshift(',')
newStr.unshift(str.charAt(i))
} else {
newStr.unshift(str.charAt(i))
}
count++
}
return strDot ? newStr.join('') + strDot : newStr.join('')
}
或
function paddingNum(inputNum: number) {
let flag = inputNum > 0 ? true : false;
let numArr = Math.abs(inputNum).toString().split('.');
let right = numArr[1] ? '.' + numArr[1] : ''; // 小数点右边的数字
let left = numArr[0]; // 小数点左边的数字
let temp = '';
while (left.length > 3) {
// str.slice(start, end); 截取字符串,返回截取的字符串,end取不到
temp = ',' + left.slice(-3) + temp;
left = left.slice(0, left.length - 3);
}
return flag ? left + temp + right : '-' + left + temp + right;
}
console.log(paddingNum(2, 3)); // '2'
console.log(paddingNum(1234.56)); // '1,234.56'
console.log(paddingNum(123456789)); // '123,456,789'
console.log(paddingNum(-987654.3)); // '-987,654.3'
4. Intl.NumberFormat
,默认保留三位小数
原生js功能。支持 IE11、Edge、最新的 Safari、Chrome、Firefox、Opera、iOS 上的 Safari 和 Android 上的 Chrome。
可以把普通的数字,转换成不同的货币和格式样式字符串。
let num = '15234235245223';
function numberToThousands3(str: string | number) {
if (str)
return new Intl.NumberFormat('en-US').format(Number(str))
}
console.log(numberToThousands3(num)); // '15,234,235,245,223'