JavaScript Number Methods
JavaScript provides built-in methods to work with numbers. These methods can convert numbers to strings, format decimal places, parse strings into numbers, and validate number types.
toString() and valueOf()
toString() converts a number to a string. You can optionally pass a radix (base) for different number systems. valueOf() returns the primitive value of a Number object.
let num = 255;
// Convert to string
console.log(num.toString());
console.log(typeof num.toString());
// Different bases (radix)
console.log(num.toString(2));
console.log(num.toString(8));
console.log(num.toString(16));
// valueOf() returns primitive number
let numObj = new Number(42);
console.log(numObj.valueOf());
console.log(typeof numObj.valueOf());toFixed() and toPrecision()
toFixed() formats a number to a specified number of decimal places. toPrecision() formats a number to a specified total number of significant digits. Both return strings.
let price = 9.6789;
// toFixed(decimals) — fixed decimal places
console.log(price.toFixed(0));
console.log(price.toFixed(2));
console.log(price.toFixed(4));
let pi = 3.14159265;
// toPrecision(digits) — total significant digits
console.log(pi.toPrecision(2));
console.log(pi.toPrecision(4));
console.log(pi.toPrecision(7));
// Useful for currency
let total = 19.1;
console.log(`$${total.toFixed(2)}`);Number(), parseInt(), parseFloat()
These global functions convert other types to numbers. Number() converts the entire value, parseInt() extracts an integer from the beginning of a string, and parseFloat() extracts a floating-point number.
// Number() — converts the entire value
console.log(Number("123"));
console.log(Number("123.45"));
console.log(Number(" 99 "));
console.log(Number("12abc"));
console.log(Number(true));
console.log(Number(false));
console.log(Number(""));
// parseInt() — extracts integer from start
console.log(parseInt("42px"));
console.log(parseInt("3.14"));
console.log(parseInt("0xFF", 16));
console.log(parseInt("11", 2));
// parseFloat() — extracts decimal from start
console.log(parseFloat("3.14rem"));
console.log(parseFloat(" 42.5 "));
console.log(parseFloat("abc"));Number.isInteger(), Number.isFinite(), Number.isNaN()
These static methods on the Number object provide reliable type checking for numbers. Unlike the global isNaN() and isFinite(), these do not coerce the argument to a number first.
// Number.isInteger()
console.log(Number.isInteger(42));
console.log(Number.isInteger(42.0));
console.log(Number.isInteger(42.5));
console.log(Number.isInteger("42"));
// Number.isFinite()
console.log(Number.isFinite(100));
console.log(Number.isFinite(Infinity));
console.log(Number.isFinite(-Infinity));
console.log(Number.isFinite(NaN));
console.log(Number.isFinite("100"));
// Number.isNaN() vs global isNaN()
console.log(Number.isNaN(NaN));
console.log(Number.isNaN("hello"));
console.log(isNaN("hello"));
console.log(Number.isNaN(undefined));Global isNaN() vs Number.isNaN()
The global isNaN() first coerces its argument to a number, then checks if it is NaN. Number.isNaN() does not coerce — it only returns true if the value is exactly NaN. Always prefer Number.isNaN() for reliable checks.
// Global isNaN() coerces first
console.log(isNaN("hello"));
console.log(isNaN(undefined));
console.log(isNaN({}));
// Number.isNaN() does NOT coerce
console.log(Number.isNaN("hello"));
console.log(Number.isNaN(undefined));
console.log(Number.isNaN(NaN));
// Practical example
let result = 0 / 0;
console.log(Number.isNaN(result));| Method | Description | Returns |
|---|---|---|
| toString(base) | Convert to string in given base | String |
| toFixed(n) | Format with n decimal places | String |
| toPrecision(n) | Format with n significant digits | String |
| valueOf() | Get primitive number value | Number |
| Number(val) | Convert value to number | Number |
| parseInt(str, base) | Parse integer from string | Number |
| parseFloat(str) | Parse float from string | Number |
| Number.isInteger(val) | Check if value is an integer | Boolean |
| Number.isFinite(val) | Check if value is finite | Boolean |
| Number.isNaN(val) | Check if value is exactly NaN | Boolean |