<!DOCTYPE html>
<html> <head> <meta charset="utf-8" /> <title></title> <script type="text/javascript" src="https://ss1.bdstatic.com/5eN1bjq8AAUYm2zgoY3K/r/www/cache/static/protocol/https/jquery/jquery-1.10.2.min_65682a2.js"></script> </head> <body><script type="text/javascript">
alert(numFormat('28888887878787878787.99935987',5,",","ceil")) /** * <br>方 法 描 述:数字格式化 * <br>参 数 说 明: * data:即将被格式化的数值 * negativeNumLen:小数位长度,0表示格式化为整数 * split:分隔符,若为空,则不格式化("," 效果:23,667,231) * regularType:舍值方式 ceil(向上取值) floor(向下取值) round(四舍五入),为空 默认设置为四舍五入 * <br>调 用 方 式:alert(numFormat('28888887878787878787.99935987',5,",","ceil")) * <br>创 建 人:jinzhaoqiang * <br>创建时间:2018/6/19 10:29 * <br>修改备注:无 */ function numFormat(data,negativeNumLen,split,regularType){ if (typeof(negativeNumLen)!='number' || negativeNumLen<0 || !data) //校验传入参数 return data; if (!(data = data+'').match(/^-?\d*\.?\d*$/)) //如果输入值不是数字,则直接返回 return data; if (data.indexOf(".")==-1 || (data.indexOf('.')!=-1 && (data.length-data.indexOf('.')-1<=negativeNumLen))) if (negativeNumLen==0) { //小数位不存在 data = addSplit4Num(data,split) return data; } else{ //小数位不足,补零返回 var frac = ""; if(data.indexOf('.')==-1) data = data+'.'; if (data.length-data.indexOf('.')-1<negativeNumLen) for(var i=data.length-data.indexOf('.')-1;i<negativeNumLen;i++){ frac = frac + "0"; } data = addSplit4Num(data + frac,split) return data; } var fr; var intPart = data.substr(0,data.indexOf('.')); var fracPart = data.substr(data.indexOf('.')+1); var fracPart2 = fracPart.substr(0,negativeNumLen); switch(regularType){ case "ceil": //向上取值 if (fracPart.substr(negativeNumLen,1).match(/[1-9]{1}/)) fr = incTail(intPart+"."+fracPart2); else fr = intPart+"."+fracPart2; break; case "floor": //向下取值 fr = intPart+"."+fracPart2; break; case "round": //四舍五入 if (fracPart.substr(negativeNumLen,1).match(/[5-9]{1}/)){ fr = incTail(intPart+"."+fracPart2); }else{ fr = intPart+"."+fracPart2; } break; default: if (fracPart.substr(negativeNumLen,1).match(/[5-9]{1}/)){ fr = incTail(intPart+"."+fracPart2); }else{ fr = intPart+"."+fracPart2; } break; } if (fr) { //添加分隔符 fr = addSplit4Num(fr,split); } if(typeof(fr)!='undefined'){ if(fr[fr.length-1]=='.') fr = fr.substr(0,fr.length-1) return fr; } return data; } function incTail(data){ var increase = true; var fr = ""; Array.from(data).reverse().filter((bda,index)=>{ if (!increase) { fr = bda + fr; }else{ if (bda=='.') { fr = bda + fr; }else if(bda=='9'){ bda = '0'; fr = "0" + fr; if (index==data.length-1) { fr = "1" + fr; } }else{ increase = false; fr = String.fromCharCode(bda.charCodeAt()+1) + fr; } } }) return fr; } /** * <br>方 法 描 述:增加分隔符 如 222,321,1 * <br>参 数 说 明:data:要被格式化的数值,split:分隔符 * <br>创 建 人:jinzhaoqiang * <br>创建时间:2018/6/15 9:50 * <br>修改备注:无 */ function addSplit4Num(data,split){ if (!split || !data) return data; //数据为空,或分隔符为空,直接返回 data = data + ""; var fr = ""; var isNeg = false; if (data[0]=="-"){ isNeg = true; data = data.substr(1); } for (var i = 0,j=0; i < data.length; i++,j++) { if (data[j]==".") j=-1; if (j%3==0 && j!=0 && fr.indexOf('.')==-1) fr = fr + split; fr = fr + data[i]; } if (isNeg) fr = "-" + fr; return fr; }</script>
</body> </html>