/* eslint-disable prefer-destructuring */ export function range(num: number, min: number, max: number): number { return Math.min(Math.max(num, min), max); } function trimExtraChar(value: string, char: string, regExp: RegExp) { const index = value.indexOf(char); if (index === -1) { return value; } if (char === "-" && index !== 0) { return value.slice(0, index); } return value.slice(0, index + 1) + value.slice(index).replace(regExp, ""); } export function formatNumber( value: string, allowDot = true, allowMinus = true, ): string { if (value.startsWith(".")) { value = value.slice(1); } if (allowDot) { value = trimExtraChar(value, ".", /\./g); } else { // eslint-disable-next-line prefer-destructuring value = value.split(".")[0]; } if (allowMinus) { value = trimExtraChar(value, "-", /-/g); } else { value = value.replace(/-/g, ""); } const regExp = allowDot ? /[^-0-9.]/g : /[^-0-9]/g; value = value.replace(regExp, ""); if (allowDot && value.includes(".")) { const [integerPart, decimalPart] = value.split("."); value = `${integerPart}.${decimalPart.slice(0, 8)}`; } return value; } // add num and avoid float number export function addNumber(num1: number, num2: number) { const cardinal = 10 ** 10; return Math.round((num1 + num2) * cardinal) / cardinal; }