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