number.js function isLegalFloat(origin, scale) { // 判断是否是数字 if (origin === null || isNaN(origin)) { return false; } // 准备验证数字格式的正则表达式 var regExp = null; if (scale 1) { regExp = /(^-?[1-9]{1}\d{0,9}$
function isLegalFloat(origin, scale) { // 判断是否是数字 if (origin === null || isNaN(origin)) { return false; } // 准备验证数字格式的正则表达式 var regExp = null; if (scale < 1) { regExp = /(^-?[1-9]{1}\d{0,9}$)|(^0$)/; } else { var expression = "(^-?[1-9]{1}\\d{0,9}(\\.\\d{1,scale})?$)|(^-?0\\.\\d{1,scale}$)|(^-?[1-9]{1}\\d{0,9}$)|(^0$)"; expression = expression.replace(/scale/g, scale); regExp = new RegExp(expression); } return regExp.test(origin); } function formatFloat(origin, scale) { if(typeof origin == "number"){ origin = origin.toString(); } // 排除非法数字字符串 if (origin === null || isNaN(origin) || origin.length == 0) { return { legal: false, value: "" } } // 整理符号位 var firstcharacter = origin[0]; var hasSign = (firstcharacter == '-' || firstcharacter == '+') var isNegative = (firstcharacter == '-'); if (hasSign) { origin = origin.substr(1); console.log("有符号位"); console.log(origin); } var dotIndex = origin.indexOf('.'); var value = null; if (dotIndex == -1 || dotIndex == (origin.length - 1)) { /** * origin like * xxx. * xxx * 截取小数点scale位小数 */ origin = origin.replace(/\./g, ''); /** * origin like * xxx. → xxx * xxx * 截取小数点scale位小数 */ if (origin == 0) { value = "0" } else { /** * origin like * 0+[1-9]\d* * 截取小数点scale位小数 */ value = (hasSign ? "-" : "") + origin.replace(/^0+/, ''); /** * value like * [1-9]\d* * 截取小数点scale位小数 */ } } else if (dotIndex == 0) { /** * origin like * .xxxxxxxxxx * .xxx * 截取小数点scale位小数 */ if(scale == 0){ return { legal: false, value: "" } } if (origin.length - 1 > scale) { origin = origin.substr(0, scale + 1); } value = (hasSign ? "-" : "") + "0" + origin; } else { var leftPart = origin.substr(0, dotIndex); if (leftPart == 0) { leftPart = "0"; } else { leftPart = leftPart.replace(/^0+/, ''); } var rightPart = origin.substr(dotIndex); if (rightPart.length - 1 > scale) { rightPart = rightPart.substr(0, scale + 1) } value = (hasSign ? "-" : "") + leftPart + (scale == 0 ? "" : rightPart); } return { legal: true, value: value }; }