/*** * 数字格式化(适合金融产品截断小数位后展示) * @param num * @param pattern (标准格式:#,###.## 或#.## 或#,###00.00) * @param round 1=四舍五入后格式化;0=截断格式化 * @returns {string} */ function formatNumber(num, pattern, round) { if (num && !/^[\d\.]+$/g.test(num)) { console.log("the number format is incorrect!"); return ""; } var formatLeft = ""; var formatRight = ""; var symbolFlag = pattern.lastIndexOf("."); if (symbolFlag == -1) { formatLeft = pattern; } else { formatLeft = pattern.substring(0, pattern.lastIndexOf(".")); formatRight = pattern.substring(pattern.lastIndexOf(".") + 1, pattern.length); } //四舍五入 if (round == 1) { num = new Number(num).toFixed(formatRight.length); } //格式化数字 var numberLeft = ""; var numberRight = ""; var numSymbolFlag = num.lastIndexOf("."); if (numSymbolFlag == -1) { var numberLeft = num; } else { var numberLeft = num.substring(0, num.lastIndexOf(".")); var numberRight = num.substring(num.lastIndexOf(".") + 1, num.length); } var numberBucket = new Array(); var formatFlag = formatLeft.indexOf("#,###");//千位符标记 var count = 1; var len = numberLeft.length; for (var i = len; i > 0; i--) { numberBucket.unshift(numberLeft.charAt(i - 1)); if (formatFlag != -1) { if (count % 3 == 0 && count != len) { numberBucket.unshift(','); } } count++; } if (symbolFlag != -1) { numberBucket.push('.'); } for (var i = 0; i < formatRight.length; i++) { if (formatRight.charAt(i) && numberRight.charAt(i)) { numberBucket.push(numberRight.charAt(i)) } else { numberBucket.push("0"); } } return numberBucket.join(""); } //测试 document.writeln(formatNumber("123456789.123456", "#") + "
"); document.writeln(formatNumber("123456789.123456", "#.#") + "
"); document.writeln(formatNumber("123456789.123456", "#,###") + "
"); document.writeln(formatNumber("123456789.123456", "#,###.#") + "
"); document.writeln(formatNumber("123456789.123456", "#,###00.00000000") + "
"); document.writeln(formatNumber("123456789.123456", "#,###.####") + "
"); document.writeln(formatNumber("1.50", "#.#", 1) + "
"); document.writeln(formatNumber("1.125456", "#.#", 1) + "
"); document.writeln(formatNumber("1.125456", "#.##", 1) + "
"); document.writeln(formatNumber("1.125456", "#.###", 1) + "
"); document.writeln(formatNumber("1.125456", "#.####", 1) + "
"); document.writeln(formatNumber("1.125456", "#.#####", 1) + "
");