今天项目要求前端显示金额保留两位小数,于是自己写了一个函数。能够支持自定义保留小数位和补零操作。
话不多说,上JS代码:
//精确小数点
//number:为你要转换的数字
//format:要保留几位小数;譬如要保留2位,则值为2
//zerFill:是否补零。不需要补零可以不填写此参数
function accurateDecimal(number,format,zeroFill){//判断非空if (!isEmpty(number)){//正则匹配:正整数,负整数,正浮点数,负浮点数if (!/^\d+(\.\d+)?$|^-\d+(\.\d+)?$/.test(number)) return number; var n=1;for(var i=0;i<format;i++){n=n*10;}//四舍五入number=Math.round(number*n)/n;var str=number.toString();//是否补零if(zeroFill){var index;if(str.indexOf(".")==-1){index=format;str+='.';}else{index=format-((str.length-1)-str.indexOf("."));}for(var i=0;i<index;i++){str+='0';}}return str;}return number;
};//非空验证
function isEmpty(ObjVal){if ((ObjVal==null || typeof(ObjVal)=="undefined")|| (typeof(ObjVal)=="string"&&ObjVal==""&&ObjVal!="undefined")){return true;}else{return false;}
}
项目效果:
函数调用:
var nunber=accurateDecimal(123.456,2,'Y');
alert(nunber);
若不需要补零则:
var nunber=accurateDecimal(123.45,3);
alert(nunber);
代码有瑕疵可在下方留言。谢谢观赏~