【js】金钱格式化(每三位逗号分隔)的方法

JavaScript010

【js】金钱格式化(每三位逗号分隔)的方法,第1张

我们在日常开发中后台返回的金钱常常只是一个数字,比如12345.67,这时需要做一下转化,把它变成12,345.67这样的金钱格式,我想到的方法如下:

整体思路就是先拿到数据后,先把它当成字符串处理,通过小数点,分开整数和小数部分,然后处理整数部分,如果整数部分小于等于3位,直接用就可以啦,如果大于3位,那么就把这个整数最后3位先存起来且前面加上逗号,然后割掉这个整数的这3位,继续重复这个判断,每次截取的后三位都拼到上一次截取结果的前面,直到整数部分小于等于三位了,就可以和存储的结果拼在一起,再拼上小数部分就可以啦。

希望大家能有更好的方法~

function toThousands( num ) {

var v = num + '', arr = v.split( '.' )

return num == 0 &&'0.00' || ( typeof ( num ) === 'number' || typeof ( num ) === 'string' ) &&!isNaN( num - parseFloat( num ) )

&&( arr[ 0 ].replace( /(\d)(?=(?:\d{3})+$)/g, '$1,' ) + '.' + ( arr.length === 1 &&'00'

|| arr.length === 2 &&( ( parseFloat( '0.' + arr[ 1 ] ).toFixed( 2 ) ).toString().split( '.' )[ 1 ] ) ) ) || num

}

此方法,可以保留两位小数,不会出现科学计数法的尴尬!