Skip to main content

toFinite()

toFinite(value): number

Converts value to a finite number.

DEPRECATED

Use Number() with manual clamping for infinities instead.


Parameters​

value: unknown​

The value to convert.


Returns: number​

The converted finite number.


See Also​

Number() - MDN


Since​

2.0.0


Also known as​

toFinite (Lodash, es-toolkit) · ❌ (Remeda, Radashi, Ramda, Effect, Modern Dash, Antfu)


Example​

// ❌ Deprecated approach
toFinite(3.7); // => 3.7
toFinite(Infinity); // => 1.7976931348623157e+308 (MAX_VALUE)
toFinite(-Infinity); // => -1.7976931348623157e+308
toFinite(NaN); // => 0

// βœ… Recommended approach
const n = Number(value);
Number.isFinite(n) ? n : (n > 0 ? Number.MAX_VALUE : (n < 0 ? -Number.MAX_VALUE : 0));

How it works?​

Converts value to a finite number. Deprecated: Use combination of Number() and bounds check.

Native Equivalent​

// ❌ toFinite(value)
// βœ… Math.max(-Number.MAX_VALUE, Math.min(Number.MAX_VALUE, Number(value)))

Use Cases​

Convert to finite πŸ“Œβ€‹

Convert value to finite number, clamping infinities.

const n = Number(value);
const finite = Number.isFinite(n)
? n
: (n > 0 ? Number.MAX_VALUE : (n < 0 ? -Number.MAX_VALUE : 0));

Safe division result​

Handle division that might produce infinity.

function safeDivide(a: number, b: number): number {
const result = a / b;
if (!Number.isFinite(result)) {
return result > 0 ? Number.MAX_VALUE : -Number.MAX_VALUE;
}
return result;
}