js数字千位分割的常用方法


把普通的数字转换为带千位分隔符格式的数字字符串是一个非常常见的问题,
千位分隔符格式的规则是数字的整数部分每三位一组,以“,”分节。小数部分不分节 。
示例:12,345,678.23456

注:只针对number所以不做其他类型的校验

方法一:遍历每3位添加 " , "

	const numFormat1 = param => {
		const num = param + '';
		const numGroup = num.includes('.') ? num.split('.') : [num];
		const intFn = numStr =>
			numStr
				.split('')
				.reverse()
				.reduce((prev, next, index) => {
					return (index % 3 ? next : next + ',') + prev;
				});
		const intNum = intFn(numGroup[0]);
		const floatNum = numGroup[1] ? '.' + numGroup[1] : '';
		return intNum + floatNum;
	};

方法二:toLocaleString

使用JS自带的函数 toLocaleString

numObj.toLocaleString([locales [, options]]) 注:小数部分自动四舍五入了

toLocaleString() 方法返回这个数字在特定语言环境下的表示字符串。

	let num1 = 12345678912345;
	let num2 = 987654.321056;
	
	console.log(num1.toLocaleString());  // "12,345,678,912,345"
	console.log(num2.toLocaleString());  // "987,654.321"  (小数部分四舍五入了)

方法三:正则匹配和replace

str.replace(regexp|substr, newSubStr|function)

	const numFormat = num => {
	  return num.toString().replace(/\d+/, function(n){ // 先提取整数部分
	       return n.replace(/(\d)(?=(\d{3})+$)/g, function($1){
	          return $1 + ",";
	       });
	  })
	}
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值