49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
/**
|
|
* # Get Number from any input
|
|
* @example
|
|
* numberfy("123") // 123
|
|
* numberfy("123.456") // 123
|
|
* numberfy("123.456", 2) // 123.46
|
|
* numberfy("123.456", 0) // 123
|
|
* numberfy("123.456", 3) // 123.456
|
|
*/
|
|
export default function numberfy(num: any, decimals?: number): number {
|
|
try {
|
|
const numberString = String(num)
|
|
.replace(/[^0-9\.]/g, "")
|
|
.replace(/\.$/, "");
|
|
|
|
if (!numberString.match(/./)) return 0;
|
|
|
|
const existingDecimals = numberString.match(/\./)
|
|
? numberString.split(".").pop()?.length
|
|
: undefined;
|
|
|
|
const numberfiedNum = Number(numberString);
|
|
|
|
if (typeof numberfiedNum !== "number") return 0;
|
|
if (isNaN(numberfiedNum)) return 0;
|
|
|
|
if (decimals) return Number(numberfiedNum.toFixed(decimals));
|
|
if (existingDecimals)
|
|
return Number(numberfiedNum.toFixed(existingDecimals));
|
|
return Math.round(numberfiedNum);
|
|
} catch (error: any) {
|
|
console.log(`Numberfy ERROR: ${error.message}`);
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
// OLD FUNCTION
|
|
|
|
// try {
|
|
// const numberfiedNum = Number(num);
|
|
// if (typeof numberfiedNum !== "number") return 0;
|
|
// if (isNaN(numberfiedNum)) return 0;
|
|
// if (decimals) return Number(numberfiedNum.toFixed(decimals));
|
|
// return Math.round(numberfiedNum);
|
|
// } catch (/** @type {any} */ error: any) {
|
|
// console.log(`Numberfy ERROR: ${error.message}`);
|
|
// return 0;
|
|
// }
|