IT序号网

数字工具类

sanshao 2021年05月25日 编程语言 327 0
/** 
 * @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); 
    } 
}

评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!