Lompati ke konten utama
Modul 2 · Pelajaran 3 dari 47/32 dalam kursus~10 min
Pelajaran modul (3/4)

Angka dan Matematika

Di JavaScript, hanya ada satu tipe numerik: number. Keduanya bilangan bulat dan desimal (floating point) ada di sana. Tidak ada int / float terpisah seperti dalam bahasa lain.

JS
typeof 42; // 'number'
typeof 3.14; // 'number'
typeof -0.001; // 'number'
typeof Infinity; // 'number'   ← Infinity is a special number
typeof NaN; // 'number'   ← even "Not a Number" is a number (!)

Objek global Math

Math bukan fungsi: ini adalah objek dengan metode yang berguna dan konstanta. Anda tidak membuat instance, Anda menggunakannya secara langsung:

JS
Math.min(3, 1, 7); // 1
Math.max(3, 1, 7); // 7
Math.abs(-5); // 5
Math.round(4.5); // 5
Math.floor(4.9); // 4   (always rounds down)
Math.ceil(4.1); // 5   (always rounds up)
Math.sqrt(16); // 4
Math.pow(2, 10); // 1024   (equivalent to 2 ** 10)
Math.PI; // 3.141592653589793

Angka acak

Math.random() mengembalikan desimal antara 0 (termasuk) dan 1 (tidak termasuk). Untuk mendapatkan bilangan bulat dalam suatu rentang, Anda menggunakan rumus kecil:

JS
// Random integer between 0 and 9
Math.floor(Math.random() * 10);

// Random integer between 1 and 6 (a six-sided die)
Math.floor(Math.random() * 6) + 1;

Kesusahan desimal (floating point)

JS menggunakan representasi IEEE-754 64-bit, yang dibagikan kepada hampir semua orang bahasa. Ini adalah representasi biner, jadi beberapa desimal tidak bisa diwakili dengan tepat:

JS
0.1 + 0.2; // 0.30000000000000004 (!)
0.1 + 0.2 === 0.3; // false

Solusi standar: bulatkan dengan toFixed(n) (yang mengembalikan string) atau gunakan bilangan bulat dalam sen/seperseribu saat bekerja dengan uang:

JS
(0.1 + 0.2).toFixed(2); // '0.30' (string)
Number((0.1 + 0.2).toFixed(2)); // 0.3 (number)

Cobalah

Latihan#js.m2.l3.e1
Upaya: 0Memuat…

Hitung luas lingkaran dengan jari-jari `r = 5` yang dibulatkan hingga dua tempat desimal, sebagai `angka`. Untuk `r=5` diharapkan 78,54.

Memuat editor…
Tunjukkan petunjuk

Math.PI untuk pi, ** untuk eksponensial; .toFixed(2) untuk membulatkan, Number(...) untuk mengonversi kembali menjadi angka.

Solusi tersedia setelah 3 upaya

Tinjau latihan

Latihan#js.m2.l3.e2
Upaya: 0Memuat…

Diberikan tiga angka 12, 7, 23, kembalikan sebagai ekspresi terakhir selisih antara maks dan min (yaitu 16).

Memuat editor…
Tunjukkan petunjuk

Math.max dan Math.min menerima beberapa argumen yang dipisahkan koma.

Solusi tersedia setelah 3 upaya