千分位表示数字的方法大家都不陌生,在涉及到金融领域的时候里面经常会用到,比如下面的金额效果:
使用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的样子。
如果确实不清楚运行流程,在浏览器加个断点调试一下即可:
arr.join([separator]):作用是把数组转为字符串,即返回以separator分割的字符串,代码中result.join('')表示并不用什么分隔,相当于直接把数组转为字符串。