格式化数字 - 千分位添加逗号三种方法

文章介绍了JavaScript中的toLocaleString()方法,用于数字和时间的格式化。示例包括将大数字转换为易读格式,以及设置24小时和12小时制的时间格式。此外,还展示了使用正则表达式和自定义函数对数字字符串进行分隔处理的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值