數字工具類

/**
 * @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);
    }
}
相關文章
相關標籤/搜索