javascript 格式化数字

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuliqi0429/article/details/51096870
/**
 * 数字格式化
 * @param src 源数据
 * @param fengewei 多少位一分割
 * @param baoliuweishu 保留小数位数
 * @param dianhoushifufen 小数点后是否也分割
 * @returns {String} 格式化后字符串
 */

function numberFormat(){
	var len=arguments.length;
	if(len==1){
		var src=arguments[0];
		return Format(src,3,2,false);
	}else if(len==2){
		var src=arguments[0];
		var baoliuweishu=arguments[1];
		return Format(src,3,baoliuweishu,false);
	}else if(len==3){
		var src=arguments[0];
		var fengewei = arguments[1];
		var baoliuweishu=arguments[2];
		return Format(src, fengewei, baoliuweishu,false);
	}else if(len==4){
		var src=arguments[0];
		var fengewei=arguments[1];
		var baoliuweishu=arguments[2];
		var dianhoushifufen=arguments[3];
		return Format(src, fengewei, baoliuweishu,dianhoushifufen);
	}
}
/**
 * 为数字添加分隔符
 * @param src
 * @param fengewei
 * @param baoliuweishu
 * @param dianhoushifufen
 * @returns {String}
 */
function Format(src, fengewei, baoliuweishu, dianhoushifufen) {
	if (typeof src != "number") {
		alert("传入源数据不是数字,请检查");
		return;
	}
	if (typeof fengewei != "number") {
		alert("传入分割位数不是数字,请检查");
		return;
	}else if((fengewei + '').indexOf('.') != -1){
		alert("传入分割位数不是整数,请检查");
		return
	}
	if (typeof baoliuweishu != "number") {
		alert("传入保留位数不是数字,请检查");
		return;
	}else if((baoliuweishu + '').indexOf('.') != -1){
		alert("传入分割位数不是整数,请检查");
		return
	}
	if (typeof dianhoushifufen != "boolean") {
		alert("传入小数点后是否保留是true或false,请检查");
		return;
	}
	var currsrc = src + "";
	if (baoliuweishu != "" && baoliuweishu > 0) {
		currsrc = formatFloat(src, baoliuweishu) + "";
	}
	var num = currsrc.split('.');
	var arr = num[0].split('');
	var b = '';var c='';
	var index = 0;var index1=0;
	for ( var i = arr.length - 1; i >= 0; i--) {
		if (index % fengewei == 0) {
			b = arr[i] + ',' + b;
		} else {
			b = arr[i] + b;
		}
		++index;
	}
	b = b.substring(0, b.lastIndexOf(','));
	if(dianhoushifufen==false){
		if (num.length > 1) {
			b = b + '.' + num[1];
		}
	}else{
		var arr1=num[1].split('');
		for ( var i = 0; i <arr1.length; i++) {
			if (index1 % fengewei == 0) {
				if(index1!=0){
					c = c+","+arr1[i];
				}else{
					c=c+arr1[i];
				}
				
			} else {
				c = c+arr1[i] ;
			}
			++index1;
		}
		b=b+"."+c;
	}
	
	return b;
}

/**
 * 保留小数位数
 * 
 * @param src 源数据
 * @param pos 保留位数
 * @returns {Number}
 */
function formatFloat(src, pos) {
	return Math.round(parseFloat(src) * Math.pow(10, pos)) / Math.pow(10, pos);
}

猜你喜欢

转载自blog.csdn.net/yuliqi0429/article/details/51096870