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.
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:
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.141592653589793Angka acak
Math.random() mengembalikan desimal antara 0 (termasuk) dan 1 (tidak termasuk).
Untuk mendapatkan bilangan bulat dalam suatu rentang, Anda menggunakan rumus kecil:
// 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:
0.1 + 0.2; // 0.30000000000000004 (!)
0.1 + 0.2 === 0.3; // falseSolusi standar: bulatkan dengan toFixed(n) (yang mengembalikan string) atau
gunakan bilangan bulat dalam sen/seperseribu saat bekerja dengan uang:
(0.1 + 0.2).toFixed(2); // '0.30' (string)
Number((0.1 + 0.2).toFixed(2)); // 0.3 (number)Cobalah
Hitung luas lingkaran dengan jari-jari `r = 5` yang dibulatkan hingga dua tempat desimal, sebagai `angka`. Untuk `r=5` diharapkan 78,54.
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
Diberikan tiga angka 12, 7, 23, kembalikan sebagai ekspresi terakhir selisih antara maks dan min (yaitu 16).
Tunjukkan petunjuk
Math.max dan Math.min menerima beberapa argumen yang dipisahkan koma.
Solusi tersedia setelah 3 upaya