写一个js函数,添加千位分隔符

写一个js函数,添加千位分隔符,第1张

思路:添加千位分隔符是从后到前,每3位添加逗号,所以这里输入数据转换成字符串后,利用slice方法的输入负数参数从后取的特点,从后毁肢取三位数字保存在数组中,并把取剩后的纤缓世数据递归重复取值,直到数据不足3位,把剩下哪穗一起存入数组中

/*

数值四舍五入后格式化.

@param num 数值(Number或者String)

@param cent 要保留的小数位(Number)

@param isThousand 是否需要千分位 0:不需要世棚,1:需要(数值类型)

@return 格式的字符串,如'1,234,567.45'

@type String

*/

function formatNumber(num,cent,isThousand){

num = num.toString().replace(/\$|\,/g,'')

if(isNaN(num))//检查传入数值为数值类型.

num = "0"

if(isNaN(cent))//确保传入小数位为数值型数值.

cent = 0

cent = parseInt(cent)

cent = Math.abs(cent)//求出小数位数,确保为正整数.

if(isNaN(isThousand))//确保传入是否需要千分位为灶返庆数值类型.

isThousand = 0

isThousand = parseInt(isThousand)

if(isThousand <0)

isThousand = 0

if(isThousand >=1) //确保隐握传入的数值只为0或1

isThousand = 1

sign = (num == (num = Math.abs(num)))//获取符号(正/负数)

//Math.floor:返回小于等于其数值参数的最大整数

num = Math.floor(num*Math.pow(10,cent)+0.50000000001)//把指定的小数位先转换成整数.多余的小数位四舍五入.

cents = num%Math.pow(10,cent)//求出小数位数值.

num = Math.floor(num/Math.pow(10,cent)).toString()//求出整数位数值.

cents = cents.toString()//把小数位转换成字符串,以便求小数位长度.

while(cents.length<cent){//补足小数位到指定的位数.

cents = "0" + cents

}

if(isThousand == 0) //不需要千分位符.

return (((sign)?'':'-') + num + '.' + cents)

//对整数部分进行千分位格式化.

for (var i = 0i <Math.floor((num.length-(1+i))/3)i++)

num = num.substring(0,num.length-(4*i+3))+'’'+

num.substring(num.length-(4*i+3))

return (((sign)?'':'-') + num + '.' + cents)

}

数字转换为带千位分隔符格式的数字字符串,类似这样的需求,前后端都可以处理。在前端,一般么,都是把数字字符串转换成数组,每个3个加入',',push到数组中,或者通过字符串累加,每隔三位加逗号,过滤正好在第一个数字的情况,加千分位逗号

方法1:

方法2:

js内置方法 toLocaleString

具体内容可以参考官网

方法3: 正则表达式,着重推荐!!!要是在面试中,能手写出来,可以无备唯罩敌一下下

第三个方法是最好的,有疑惑的同学可以有时间阅读一下原文,解释的很详细

https://blog.csdn.net/lxcao/article/details/52728246?utm_medium=distribute.pc_aggpage_search_result.none-task-blog-2

方法4: 正则表达式 和 replace

参考阅读:

1. 正则表达式30分钟入门教程

2. String.prototype.replace()

3. https://www.jianshu.com/p/928c68f92c0c

周六周日都在加班,周一又通宵到4点,仿闹周二下午打电话又让我赶别的需求。诶,心累,就懒得整理了,大家自己看吧。要是有人有兴趣,我可以提供杭州比较坑的公司山槐excel list,也是别人转发的,不知道是不是真的,就当看看吧


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/bake/11980785.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存