js实现用千分位分隔符来表示数字

千分位表示数字的方法大家都不陌生,在涉及到金融领域的时候里面经常会用到,比如下面的金额效果:

image.png

使用js怎么实现上面的效果呢?使用js实现数字的千分位表示方法其实有很多,我这里介绍一种,如下是代码:

<script>
  function toThousands(num) {
    	  if(!num) return; 
    	  var dot="";
    	  var numb="";
		  num=num.toString();
    	  if((num||0).toString().indexOf(".")>-1){
    	  		dot=num.substring(num.indexOf("."));//.6689
    	  		numb=num.substring(0,num.indexOf("."));//123456723456
    	  }else{
    		  numb=num;
    	  }
    	    var result = [ ], counter = 0;
    	    numb = numb.split('');
    	    for (var i = numb.length - 1; i >= 0; i--) {
    	        counter++;
    	        result.unshift(numb[i]);
    	        if ((counter % 3==0) && i != 0) { result.unshift(','); }
    	    }
    	    return result.join('')+dot;
    }
alert(toThousands(123456723456.6689));
</script>

代码说明:

toString()函数可以把数字等其他非字符串类型转化为字符串,如果一个数字想使用字符串的函数比如indexOf()等就必须先把数字使用toString()转为字符串。

str.substring(start,stop):截取字符串并返回新的字符串,[包括,不包括),下标从0开始,str不变

str.indexOf(searchvalue):返回searchvalue在str中首次出现的位置,无则返回-1

arr.unshift(e1,[e2,.,eN]):向数组的开头添加一个或更多元素,并返回新的长度。代码中的result.unshift(numb[i])的作用就是把整数部分“123456723456”从后往前依次放入到数组result的头部,并每隔3位加个“,”,最终变为123,456,723,456的样子。

如果确实不清楚运行流程,在浏览器加个断点调试一下即可:

image.png

arr.join([separator]):作用是把数组转为字符串,即返回以separator分割的字符串,代码中result.join('')表示并不用什么分隔,相当于直接把数组转为字符串。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值