/**
* @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);
}
}