formatnumber js_好用的JS数字格式化

/*

*js格式化数字代码

*

*value: 要格式化的数字值

*scale: 最多保留几位小数

*zeroed: 是否保留尾0

*percented: 是否转称百分比形式

*

*/

function formatNumber(value, scale, zeroed, percented){

if (value == null)

return percented ? '0%' : 0;

var mr = (''+value).match(/^\d+\.?\d*$/);

if (!mr)

return percented ? '0%' : 0;

mr = (percented ? (value = Number(mr[0]) * 100)+'' : mr[0]).split('.');console.info(mr);

if (mr.length == 1)

return (zeroed ? (mr[0] + ((function(){var r = '.';for (var i = 0; i < scale; i++) {

r += '0';

}return r;}()))) : mr[0]) + (percented ? '%' : '');

var mr_l = mr[0], mr_r = mr[1];

if (mr_r.length == scale)

return (zeroed ? (mr_l + '.' + mr_r) : (value + '').replace(/\.*0+$/, '')) + (percented ? '%' : '');

else if (mr_r.length < scale)

return (zeroed ? value + ((function(){var r = ''; for (var i = 0; i < scale - mr_r.length; i++) {

r += '0';

}return r;})()) : (value + '').replace(/\.*0+$/, '')) + (percented ? '%' : '');

else {

var _s = mr_r.substr(0, scale + 1);

_s = _s.charAt(scale) > 4 ? (Number(_s.substring(0, scale)) + 1) + '' : _s.substring(0, scale);

if (_s.length == (scale + 1)){

mr_l = (Number(mr_l) + Number(_s.charAt(0))) + '';

_s = _s.substring(1);

}

return (zeroed ? (mr_l + '.' + _s) : (mr_l + (_s.match(/^0*$/) ? '' : ('.' + _s.replace(/0+$/, '')))))

+ (percented ? '%' : '');

}

};

/*

*js数字千分位格式化代码

*

*value: 要格式化的数字值

*seperator: 千分位符号

*digitNum: 保留几位小数

*/

function formatNumber2(value, seperator, digitNum){

var initV = value;

if((value = ((value = value + "").replace(/^\s*|\s*$|,*/g, ''))).match(/^\d*\.?\d*$/) == null)

return initV;

value = digitNum >= 0 ? (Number(value).toFixed(digitNum) + "") : value;

var r = [], tl = value.split(".")[0], tr = value.split(".")[1];

tr = typeof tr != "undefined" ? tr : "";

if (seperator != null && seperator != "") {

while(tl.length >= 3) {

r.push(tl.substring(tl.length - 3));

tl = tl.substring(0, tl.length - 3);

}

if (tl.length > 0)

r.push(tl);

r.reverse();

r = r.join(seperator);

return tr == "" ? r : r + "." + tr;

}

return value;

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值