本文提供一段JavaScript函数代码,用于实现数字的格式化输出。该函数支持通过字符串参数定义格式化规则(如#,##0.00),处理null、空值或非数字输入时的默认返回值,并利用正则表达式实现千分位分隔符的自动插入。代码包含完整的参数校验与逻辑判断,适用于前端数据展示场景。
// 代码结束
JavaScript数字格式化函数实现
以下是实现该功能的代码示例:
/**
* 用于格式化数字的函数逻辑
* 作者:Z,Mingyu
* 参数说明:
* prmNum (Number) : 需要被格式化的原始数字
* prmPtn (String) : 定义格式化规则的字符串,例如:#,##0.00
* * prmNullValue : 当输入数字为null、空字符串或非数字类型时,函数返回的默认值。若未指定,默认为0
*/
function formatNum(prmNum,prmPtn,prmNullValue){
var nullValue = prmNullValue ? prmNullValue : 0;
if(prmNum == "" || prmNum == null) return nullValue;
prmNum = prmNum.replace(/\,/g,"");
if(isNaN(prmNum)) return nullValue;
if(prmPtn == "" || prmPtn == null) return prmNum;
var ptnLen = prmPtn.length;
var pointIndex = prmPtn.indexOf(".");
var groupIndex = prmPtn.indexOf(",");
var pointLen = (pointIndex == -1 ? 0 : ptnLen - pointIndex - 1);
prmNum = parseFloat(prmNum).toFixed(pointLen) + "";
if(groupIndex != -1){
if(pointIndex == -1) pointIndex = ptnLen;
var len = pointIndex - groupIndex - 1;
var reg = new RegExp("(-?\\d+)(\\d{"+len+"})");
while(reg.test(prmNum)) prmNum = prmNum.replace(reg,"$1,$2");
}
return prmNum;
}