Episode 23 of 46
Numbers in JavaScript
Deep dive into how JavaScript handles numbers, including decimals and precision.
JavaScript has a single number type that handles both integers and decimals (floating-point numbers).
Number Basics
let integer = 42;
let decimal = 3.14;
let negative = -10;
let big = 1000000;
console.log(typeof integer); // "number"
console.log(typeof decimal); // "number" (same type!)
Number Methods
let num = 3.14159;
num.toFixed(2); // "3.14" (string!)
num.toPrecision(4); // "3.142" (string!)
num.toString(); // "3.14159" (string!)
parseInt("42px"); // 42 (parses integer from string)
parseFloat("3.14"); // 3.14 (parses decimal from string)
Number("42"); // 42 (converts string to number)
Floating-Point Precision
JavaScript uses 64-bit floating-point, which can cause precision issues:
console.log(0.1 + 0.2); // 0.30000000000000004 (not 0.3!)
console.log(0.1 + 0.2 === 0.3); // false!
// Fix: use toFixed() or multiply to integers
console.log((0.1 + 0.2).toFixed(1)); // "0.3"
console.log((10 + 20) / 100); // 0.3
Special Number Values
console.log(Infinity); // Infinity
console.log(-Infinity); // -Infinity
console.log(1 / 0); // Infinity
console.log(Number.MAX_VALUE); // 1.7976931348623157e+308
console.log(Number.MIN_VALUE); // 5e-324
Checking Numbers
Number.isInteger(42); // true
Number.isInteger(3.14); // false
Number.isFinite(Infinity); // false
Number.isFinite(42); // true
isNaN("hello"); // true
isNaN(42); // false