/** * @author: 苗士軍 * @description 數字工具類 */ NumberUtils = { /** * @description 定義0數字對象 */ zero: Number(0), /** * @description 判斷是不是數字 * @param val * @return {boolean} */ isNumber: function (val) { if (val == '' || isNaN(val)) { return false; } return true; }, /** * @description 轉換數字對象 * @param val * @return {*} */ toNumber: function (val) { if (this.isNumber(val)) { return Number(val); } else { return this.zero; } }, /** * @description 獲取整數對象 * @param val * @return {*} */ parseInt: function (val) { return this.toNumber(parseInt(val)); }, /** * @description 獲取小數對象 * @param val * @return {*} */ parseFloat: function (val) { return this.toNumber(parseFloat(val)); }, /** * @description 獲取向上取整後的值 * @param val * @return {*} */ ceil: function (val) { return this.toNumber(Math.ceil(val)); }, /** * @description 獲取小於x的最大整數 * @param val * @return {*} */ floor: function (val) { return this.toNumber(Math.floor(val)); }, /** * @description 獲取四捨五入後的整數 * @param val * @return {*} */ round: function (val) { return this.toNumber(Math.round(val)); }, /** * @description 獲取數字的最接近的單精度浮點型表示 * @param val * @return {*} */ fround: function (val) { return this.toNumber(Math.fround(val)); }, /** * @description 數字格式化 * @param number 要格式化的數字 * @param decimals 保留幾位小數 * @param decPoint 小數點符號 * @param thousandsMark 千位符號 * @param roundMode 舍入參數,默認 "ceil" 向上取,"floor"向下取,"round" 四捨五入 * @return {string} */ numberFormat: function (number, decimals, decPoint, thousandsMark, roundMode) { number = (number + '').replace(/[^0-9+-Ee.]/g, ''); roundMode = roundMode || "ceil"; //"ceil","floor","round" var n = !isFinite(+number) ? 0 : +number, prec = !isFinite(+decimals) ? 0 : Math.abs(decimals), sep = (typeof thousandsMark === 'undefined') ? ',' : thousandsMark, dec = (typeof decPoint === 'undefined') ? '.' : decPoint, s = '', toFixedFix = function (n, prec) { var k = Math.pow(10, prec); console.log(); return '' + parseFloat(Math[roundMode](parseFloat((n * k).toFixed(prec * 2))).toFixed(prec * 2)) / k; }; s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.'); var re = /(-?\d+)(\d{3})/; while (re.test(s[0])) { s[0] = s[0].replace(re, "$1" + sep + "$2"); } if ((s[1] || '').length < prec) { s[1] = s[1] || ''; s[1] += new Array(prec - s[1].length + 1).join('0'); } return s.join(dec); } }