将数值四舍五入后格式化.
@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,也是别人转发的,不知道是不是真的,就当看看吧
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)