import { isEmpty } from '@/utils/CommonUtils'; /* * @Author: liqiang * @Date: 2020-11-27 16:12:36 * @LastEditTime: 2021-03-30 15:52:01 * @LastEditors: Please set LastEditors * @Description: 数字工具类 * @FilePath: \ebtp-cloud-frontend\src\utils\NumberUtils.ts */ /** * 金额正则 */ const amountReplace = /(\d)(?=(\d{3})+(?!\d))/g; function getZero(num: number) { let number = ''; for (let i = 0; i < num; i++) { number += '0'; } return number; } /** * 数字转换金额格式 * @param money 数字 * @param retain 小数点后保留几位 */ export function digitalConversionAmount(money: string, retain: number) { let zero = getZero(retain); if (isEmpty(money)) { return money; } if (money.indexOf('.') === -1) { money = money.replace(amountReplace, '$1,') + '.' + zero; } else { let division = money.split('.'); money = division[0].replace(amountReplace, '$1,'); money = money + '.' + (division[1] + zero).substr(0, retain); } return money; }; /** * 根据传入的数字保留几位小数 * @param number 数字 * @param retain 小数点后保留几位 */ export function enterTheNumberToRetainTheDecimal(number: any, retain: number) { if (isEmpty(number)) { return number; } let index = String(number).indexOf('.'); if (index === -1) { return number; } else { number = String(number).substring(0, index + (retain + 1)); return number; } } /** * 加法 两个数相加 * @param arg1 * @param arg2 * @returns */ export function algebraicAddition(arg1: number, arg2: number) { let r1, r2, m, c; try { r1 = arg1.toString().split(".")[1].length; } catch (e) { r1 = 0; } try { r2 = arg2.toString().split(".")[1].length; } catch (e) { r2 = 0; } c = Math.abs(r1 - r2); m = Math.pow(10, Math.max(r1, r2)); if (c > 0) { let cm = Math.pow(10, c); if (r1 > r2) { arg1 = Number(arg1.toString().replace(".", "")); arg2 = Number(arg2.toString().replace(".", "")) * cm; } else { arg1 = Number(arg1.toString().replace(".", "")) * cm; arg2 = Number(arg2.toString().replace(".", "")); } } else { arg1 = Number(arg1.toString().replace(".", "")); arg2 = Number(arg2.toString().replace(".", "")); } return (arg1 + arg2) / m; }