Number dan Math
parseInt, parseFloat, NaN, Infinity, Math object, Number formatting.
Pahami konsepnya
JavaScript tidak membedakan int dan float — semua number adalah IEEE 754 double. Ini menghasilkan jebakan klasik: 0.1 + 0.2 === 0.3 adalah FALSE karena floating-point imprecision. Solusinya: Number.EPSILON untuk perbandingan, atau bekerja dalam satuan integer (sen, bukan rupiah).
NaN (Not a Number) adalah hasil operasi matematika gagal: 0/0, "abc" * 2, Math.sqrt(-1). NaN === NaN adalah FALSE — satu-satunya nilai yang tidak sama dengan dirinya. Periksa dengan isNaN() atau Number.isNaN(). Infinity hasil pembagian dengan nol: 1/0 → Infinity.
Math object: Math.round, Math.floor, Math.ceil, Math.abs, Math.max/min, Math.random (0-1 eksklusif), Math.pow, Math.sqrt, Math.trunc. Format angka: toFixed(2) untuk dua desimal (menghasilkan STRING), toLocaleString("id-ID") untuk pemisah ribuan.
Coba contoh kode
console.log(0.1 + 0.2); // 0.30000000000000004
console.log(0.1 + 0.2 === 0.3); // false!
console.log(Math.abs(0.1 + 0.2 - 0.3) < Number.EPSILON); // true
console.log(parseInt("42px")); // 42
console.log(parseFloat("3.14m")); // 3.14
console.log(Number("42")); // 42
console.log(Math.floor(3.7), Math.ceil(3.2)); // 3 4
console.log((1234567).toLocaleString("id-ID")); // 1.234.567
console.log((3.14159).toFixed(2)); // "3.14" — string!Jebakan 0.1+0.2 bukan bug JavaScript — semua bahasa IEEE 754 mengalaminya. toFixed mengembalikan STRING; Number(...) kembali ke number. parseInt berhenti di karakter non-angka pertama.
Latihan singkat
Uji: Math.max(3,8,1,9,4) — harus `9`.