您的位置:首页 > Web前端 > JavaScript

javascript 格式化数字

2016-04-08 15:06 639 查看
/**
* 数字格式化
* @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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: