@rbxts/jsnatives
isFinite
Determines whether the passed value is a finite number.
Signature
function isFinite(value: number): boolean
Description
The Number.isFinite()
method determines whether the passed value is a finite number - that is, it checks if the type of the value is Number and the value is neither positive Infinity, negative Infinity, nor NaN.
This is different from the global isFinite()
function, which first coerces its argument to a number before testing it.
Parameters
value
: The value to be tested for finiteness.
Return value
true
if the given value is a finite number, otherwisefalse
.
Examples
Basic Usage
// Finite numbersNumber.isFinite(42); // trueNumber.isFinite(-42); // trueNumber.isFinite(42.5); // true
// Non-finite numbersNumber.isFinite(Infinity); // falseNumber.isFinite(-Infinity); // falseNumber.isFinite(NaN); // false
// Non-numbersNumber.isFinite("42"); // falseNumber.isFinite(null); // falseNumber.isFinite(undefined); // false
Validation Functions
// Validate that a value is usable for calculationsfunction isValidForMath(value: unknown): boolean { return Number.isFinite(Number(value));}
// Test casesisValidForMath(42); // trueisValidForMath("42"); // trueisValidForMath(Infinity); // falseisValidForMath("invalid"); // false
Preventing Division by Zero
// Safely divide two numbersfunction safeDivide(a: number, b: number): number { // Check for division by zero or near-zero if (!Number.isFinite(a / b)) { throw new Error("Division by zero or resulting in a non-finite value"); }
return a / b;}
// Usagetry { const result = safeDivide(10, 0);} catch (error) { console.log(error.message); // "Division by zero or resulting in a non-finite value"}
Range Checking in Graphics
// Check if a point is within the renderable areafunction isPointRenderable(x: number, y: number): boolean { // Check that coordinates are finite numbers if (!Number.isFinite(x) || !Number.isFinite(y)) { return false; }
// Additional bounds checking return x >= 0 && x < 1000 && y >= 0 && y < 800;}
Filtering Arrays
// Filter out non-finite values from an arrayfunction getFiniteValues(values: number[]): number[] { return values.filter(Number.isFinite);}
// Usageconst mixedValues = [42, Infinity, -Infinity, NaN, 100];const finiteOnly = getFiniteValues(mixedValues);// finiteOnly is [42, 100]