typescript-util
Version:
JS/TS 的简单工具
88 lines • 3.01 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.NumberTool = void 0;
const StrTool_1 = require("./StrTool");
/**
* NumberTool
* @author 冰凝
* @date 2022-09-19 09:42:40
**/
class NumberTool {
/**
* 以货币形式展示数字 <br>
* @param amount 待显示金额
* @param fraction 小数位数, 默认 2
* @param interval 间隔 默认 4
* @param locale 货币标识 默认 ¥
*/
static showAmount(amount, fraction = 2, interval = 4, locale = '¥ ') {
return locale + NumberTool.show(amount, fraction, interval);
}
/**
* 展示一个数字 使用指定的分隔位和小数位数
* @param num 要展示的数字
* @param fraction 小数位数 大于等于零
* @param interval 分隔位 大于等于一
*/
static show(num, fraction = 2, interval = 4) {
const show = (numStr) => {
let [integer, decimal = ''] = numStr.split(StrTool_1.StrTool.DO);
// 移除负号, 避免位数判断错误
let isNegative = false;
if (parseFloat(integer) < 0) {
integer = integer.substring(1);
isNegative = true;
}
const show = [];
let count = 0;
for (let i = integer.length - 1; i >= 0; i--) {
const charAt = integer.charAt(i);
count++;
if (count % interval === 0 && count !== integer.length) {
show.unshift(', ' + charAt);
}
else {
show.unshift(charAt);
}
}
const s = fraction > 0
? show.join(StrTool_1.StrTool.EMPTY) + StrTool_1.StrTool.DO + decimal
: show.join(StrTool_1.StrTool.EMPTY);
return isNegative ? '-' + s : s;
};
if (typeof num === 'number') {
return show(num.toFixed(fraction));
}
// typeof amount === 'string'
return show(parseFloat(num).toFixed(fraction));
}
/**
* 数值边界限制
* @param num 待处理数字
* @param min 最小值(含)
* @param max 最大值 (含)
*/
static limit(num, min = 0, max = 9999_9999_9999) {
return Math.max(Math.min(num, max), min);
}
/**
* 指定数字范围转范围内所有数组成的数组, 步进1 <br>
* 范围:
* - 对于整数 恰好是 [start, end];
* - 对于小数 从 start, 开始按照步长增长到最后一个 小于等于 end 的数字
*
* @param start 开始范围, 允许大于 end
* @param end 结束范围, 允许小于 start
*/
static range(start, end) {
const res = [];
const max = Math.max(start, end);
const min = Math.min(start, end);
for (let i = min; i <= max; i++) {
res.push(i);
}
return res;
}
}
exports.NumberTool = NumberTool;
//# sourceMappingURL=NumberTool.js.map