@cainiaofe/cn-utils
Version:
菜鸟前端基础工具库
63 lines (62 loc) • 1.81 kB
JavaScript
import { isNumber, isNaN } from "../../common/type";
/**
* 保留浮点数位数函数
*
* @param {Number} num
* @param {Number} bit
*/
export var numFixed = function (num, bit, round) {
if (bit === void 0) { bit = 2; }
if (round === void 0) { round = true; }
if (!isNumber(num)) {
throw new Error('需传递数字类型');
}
// num.toFixed(bit) * 1; //12.145.toFixed(2) 12.14 12.175.toFixed(2) 12.18 银行家舍入规则
if (round) {
// 默认四舍五入
return Math.round(num * Math.pow(10, bit)) / Math.pow(10, bit);
}
else {
// 不四舍五入
num += '';
var index = num.indexOf('.');
if (index === -1) {
return +num;
}
else {
var lastIndex = Math.min(index + bit + 1, num.length);
return +num.slice(0, lastIndex);
}
}
};
/**
* 格式化数字
*
* @param {Number} num
* @param {Number} bit
*/
export var numFormat = function (num, format) {
if (isNaN(num * 1)) {
// 不是数字直接返回
return num;
}
if (isNumber(format)) {
// 传递数字,默认保留小数位
return numFixed(num, format || 2); // 默认保留两位
}
if (format === '%') {
// 传递百分号
return "".concat(numFixed(num * 100, 2), "%");
}
if (format === ',') {
// 传递,默认三数字分隔
return (num &&
(num.toString().indexOf('.') !== -1
? num.toString().replace(/(\d)(?=(\d{3})+\.)/g, function ($0, $1) {
return "".concat($1, ",");
})
: num.toString().replace(/(\d)(?=(\d{3})+\b)/g, function ($0, $1) {
return "".concat($1, ",");
})));
}
};