@jrj-front-end/tools
Version:
jrj前端工具包
78 lines (74 loc) • 1.88 kB
text/typescript
/**
* 两数相加
* @param a {number}
* @param b {number}
* @returns a+b
*/
export const add = (a: number, b: number) => {
return a + b;
}
/**
* 精确显示小数点后n位(不进行4舍5入),没有时补0
* e.g:
* value:123.16,num:1 ----> 123.1
* value:123.16,num:3 ----> 123.160
* @param value 传入的数字
* @param num 要精确显示多少位
* @returns
*/
export const keepCustomDecimalStr = (value: number, num: number = 2): string => {
let s = value.toString();
let rs = s.indexOf('.');
if (rs < 0 && num > 0) {
rs = s.length;
s += '.';
}
while (s.length <= rs + num) {
s += '0';
}
if (num > 0) {
// 如果value的小数超过了num,进行截取
s = s.slice(0, s.indexOf('.') + num + 1)
}
if (num === 0 && s.indexOf('.') >= 0) {
// 舍去全部小数的情况
s = s.slice(0, s.indexOf('.') + num)
}
return s;
};
/**
* 设置小数展示,小数点后为00则不展示
* @param num 需要转换的数字
* @param toFixNum 保留的小数位,默认两位
* @param roundingOFF 是否对小数四舍五入,默认为是
* @returns
*/
export const transferFloat = (num: number, toFixNum = 2, roundingOff = true): number => {
if (typeof num !== 'number') {
return 0;
}
if (!roundingOff) {
// 执行这里不进行4舍5入
let newNum = Number(num.toFixed(toFixNum))
if (newNum > num) {
newNum = newNum * Math.pow(10, toFixNum) - 1
newNum = newNum / Math.pow(10, toFixNum)
return newNum
}
else {
return newNum
}
}
if (String(num).indexOf('.') !== -1) {
let arr = String(num).split('.');
if (arr.length > 2) {
return num;
}
else {
return Number(num.toFixed(toFixNum));
}
}
else {
return num + 1;
}
};