Tutorial Javascript 10 - Math Object

javascript Jan 25, 2020

Math merupakan object JavaScript yang berisi berbagai property dan method untuk pemrosesan angka. Berbeda dengan object Number, seluruh property dan method untuk Math object, melekat ke objectnya langsung. Math object tidak memiliki instance property maupun instance method.

Terdapat 8 property dari Math object yang semuanya merupakan konstanta matematis:

  • Math.E: Berisi angka algoritma natural e, dengan nilai 2.718281828459045.
  • Math.LN10: Berisi algoritma natural 10, dengan nilai 2.302585092994046.
  • Math.LN2: Berisi algoritma natural 2, dengan nilai 0.6931471805599453.
  • Math.LOG10E: Algoritma natural e basis 10, nilai 0.4342944819032518.
  • Math.LOG2E: Berisi algoritma natural e basis 2, nilai 1.4426950408889634.
  • Math.PI: Berisi angka pi dengan nilai 3.141592653589793.
  • Math.SQRT1_2: Angka 1 dibagi akar kuadrat 2, dengan nilai 0.707106781186.
  • Math.SQRT2: Angka akar kuadrat dari 2, dengan nilai 1.4142145623730951.

Berikut hasil pemanggilannya:

console.log("Math.E = " + Math.E);  // 2.718281828459045
console.log("Math.LN10 = " + Math.LN10);  // 2.302585092994046
console.log("Math.LN2 = " + Math.LN2);  // 0.6931471805599453
console.log("Math.LOG10E = " + Math.LOG10E);  // 0.4342944819032518
console.log("Math.LOG2E = " + Math.LOG2E);  // 1.4426950408889634
console.log("Math.PI = " + Math.PI);  // 3.141592653589793
console.log("Math.SQRT1_2 = " + Math.SQRT1_2);  // 0.707106781186
console.log("Math.SQRT2 = " + Math.SQRT2);  // 1.4142145623730951
Math object

untuk lebih detailnya anda bisa cek disini

Kita bisa menggunakan konstanta ini dalam perhitungan matematis, seperti contoh berikut:

var jari2 = 7;
var luasLingkaran = Math.PI * jari2 * jari2;
console.log(luasLingkaran);  // 153.93804002589985

Sebagai latihan tambahan, bisakah anda memformat tampilan hasil luasLingkaran dengan 3 posisi desimal? Silakan pakai method bawaan tipe data Number yang sudah kita pelajari dalam bab sebelumnya.

Method apa yang bisa dipakai? kita bisa menggunakan method toFixed():

var jari2 = 7;
var luasLingkaran = Math.PI * jari2 * jari2;
console.log(luasLingkaran.toFixed(2));  // 153.94

Math Object Method

Math object memiliki banyak method, total terdapat 35 method:

  • Math.abs(x)
  • Math.acos(x)
  • Math.acosh(x)
  • Math.asin(x)
  • Math.asinh(x)
  • Math.atan(x)
  • Math.atanh(x)
  • Math.atan2(y, x)

untuk lebih detailnya anda bisa cek disini

Saya tidak akan membahas semua method ini, karena seperti yang terlihat sebagian besar terkait dengan rumus matematika. Kecuali anda sedang membuat aplikasi matematis atau yang melibatkan statistik, rumus-rumus ini sangat jarang dipakai.

Kita akan membahas beberapa yang penting saja.

Method Math.ceil(x), Math.floor(x) dan Math.round(x)

Ketiga method ini digunakan untuk membulatkan angka ke integer terdekat (angka bulat). Masing-masing menerima 1 argument berupa angka yang ingin dibulatkan.

Method Math.cell(x) digunakan untuk pembulatan ke atas, Math.floor() untuk pembulatan ke bawah dan Math.round() untuk pembulatan kebawah jika kurang dari 0,5 dan pembulatan ke atas jika lebih dari 0,5 (termasuk 0,5).

Berikut penggunaanya:

var foo = 12.5;

console.log(Math.floor(foo));  //12
console.log(Math.ceil(foo));  //13
console.log(Math.round(foo));  //13

var bar = 12.4;

console.log(Math.floor(foo));  //12
console.log(Math.ceil(foo));  //13
console.log(Math.round(foo));  //12

Bagaimana jika kita ingin membulatkan angka bukan ke bentuk integer, tapi (misalnya ke posisi 3 angka desimal? Ini bisa diakali dengan mengalikan nilai tersebut dengan 1000, Jalankan method lalu bagi kembali dengan 1000:

var foo = 12.1354;

console.log(Math.floor(foo));  //12
console.log(Math.ceil(foo));  //13
console.log(Math.round(foo));  //12

console.log(Math.floor(foo*1000)/1000);  //12.135
console.log(Math.ceil(foo*1000)/1000);  //12.136
console.log(Math.round(foo*1000)/1000);  //12.135
Pembulatan angka

Jika anda butuh banyak pembulatan seperti ini, bisa membuat sebuah function khusus seperti contoh di halaman ini: PHP-Like rounding Method. Atau khusus untuk pembulatan Math.round(), bisa juga menggunakan method Number.prototype.toFixed().

Method Math.random()

Method Math.random() digunakan untuk membuat angka acak (radom). Angka acak yang dihasilkan berada dalam rentang 0 -1, tapi tidak termasuk angka 1 itu sendiri. Maksudnya angka acak yang dihasilkan adalah dari 0, 0.1, 0.2, 0.3 hingga 0,9.

Berikut contoh penggunaanya:

var foo = Math.random();
console.log(foo);  // 0.8140981614912546

Jika anda menjalankan kode diatas, hasilnya akan berbeda tergantung nilai acak yang digenerate oleh javascript.

Sekarang, bagaimana caranya membuat angka acak yang bulat? bukan dalam bentuk pecahan seperti itu? misalnya angka acak bulat 0,1,2 sampai 10? kita tinggal mengalikan angka acak hasil pemanggilan Math.random() dengan 10, lalu dibulatkan menggunakan method Math.round():

var foo = Math.random();
console.log(foo);  // 0.20363693171878583

foo = Math.round(foo*10);
console.log(foo);  // 2
Membuat angka random

Dengan cara ini saya bisa membuat angka acak dari 0 - 10. Bagaimana untuk angka 0 - 100? tinggal kalikan saja hassil random dengan 100, lalu dibulatkan.

Sebenarnya trik membulatkan angka acak menggunakan method Math.round() memiliki 1 kelemahan, dimana sebaran angka yang dihasilkan kurang merata.

Method Math.max() dan Math.min()

Method Math.max() dan Math.min() digunakan untuk mencari nilai paling besar dan nilai paling kecil dari angka-angka yang diinput ke dalam argumennya.

Berikut contoh penggunaan method Math.max() dan Math.min():

var foo = Math.max(45, 90, 12, 55, 19, 75);
console.log(foo);  // 90

var bar = Math.min(45, 90, 12, 55, 29, 75);
concole.log(foo);  // 12

JavaScript tidak membatasi berapa jumlah argumen yang bisa diinput.

Dalam kebanyakan kasus, kita ingin mencari nilai maksimum dan minimun dari data yang tersimpan di dalam array. Sayangnya, kedua method tidak bisa langsung diinput kedalam tipe data array. Kita harus menggunakan perulangan untuk mencari nilai maksimun dan minimun dari sebuah array.

Namun spread operator dari ECMAScript 6 muncul sebagai solusi. Kita bisa menggunakan spread operator untuk memasukan seleruh element array ke method Math.max() dan Math.min(). Berikut contoh penggunaanya:

var foo = [45, 90, 12, 55, 19, 75];

console.log(Math.max(...foo));  // 90
console.log(Math.min(...foo));  // 12

Kita tinggal mengisi ...foo sebagai nilai argumen dari kedua method ini.

Method Math.abs()

Method Math.abs() cukup simple, method ini digunakan untuk menemukan nilai absolute dari argumentnya. Jika angka itu positif, tidak dilakukan perubahan apapun. Namun jika angka itu negatif, hasilnya adalah angka positif.

Berikut contoh penggunaanya:

var foo = 5;
console.log(Math.abs(foo);  // 5
            
var bar = -5;
console.log(Math.abs(foo);  // 5

Method Math.pow()

Method Math.pow() digunakan untuk pemangkatan suatu angka. Method ini membutuhkan 2 argument. Argument pertama adalah angka yang ingin dicari pangkatnya (base number) dan argumen kedua adalah nilai pangkatnya.

Berikut contoh penggunaan dari method Math.pow():

console.log(Math.pow(5,2));  // 25
console.log(Math.pow(2,8));  // 256

console.log(Math.pow(49,1/2));  // 7
console.log(Math.pow(6561,1/4));  // 9

console.log(Math.pow(-49,1/2));  // NaN
Pemangkatan dan akar kuadrat

Perintah Math.pow(5,2) artinya sama dengan 5 pangkat 2, sedangkan Math.pow(2,8) artinya 2 pangkat 8.

Dengan sedikit teori matematika, kita juga bisa menggunakan method Math.pow() untuk mencari akar dari sebuah angka. Caranya, dengan memberikan nilai pecahan pada argument ke dua. Perintah Math.pow(49,1/2) artinya akar kuadrat dari 49. Sedangkan Math.pow(6561,1/4) artinya akar pangkat 4 dari 6561.

Jika angka yang dihasilkan tidak bisa dihitung, method Math.pow() akan mengembalikan nilai NaN. Dalam contoh baris terakhir, saya ingin mencari akar dari angka negatif, yang tentu saja tidak bisa dihitung.

Ahmad Sarian Syakir

Aku hanya seorang pemuda biasa, terbiasa sendiri dan berdansa dengan dunia tak asli. Aku bukan apa-apa bukan siapa-siapa dan Dunia tak pernah menganggapku ada Meski aku sudah memesan tempat diatasnya.