Tutorial Java: Bermain Matematika dengan Class Math

Tutorial Java: Bermain Matematika dengan Class Math

Tutorial Information

ProgramJava
VersionJDK 6+
DifficultyPemula
Estimated Time20 menit
DownloadClick this link

Operator tambah, kurang, kali, dan bagi sudah merupakan syarat wajib sebuah bahasa pemrograman. Cukup dengan menggunakan keempat operator tersebut, hampir semua perhitungan matematika dapat…

Operator tambah, kurang, kali, dan bagi sudah merupakan syarat wajib sebuah bahasa pemrograman. Cukup dengan menggunakan keempat operator tersebut, hampir semua perhitungan matematika dapat diselesaikan. Tapi apakah Anda mau untuk membuat method sinus atau logaritma sendiri?

Java menyediakan class untuk menyelesaikan operasi-operasi matematika dasar lainnya. Sinus, cosinus, tangen, absolut, log, dan sebagainya sudah tersedia dan Anda cukup menggunakannya. Class tersebut sudah termasuk dalam API dari Java SE 6, sehingga Anda tidak perlu mendownload library-nya terlebih dahulu.

Beberapa method yang cukup bermanfaat dan sering dipakai akan dibahas di artikel ini, ditambah dengan algoritma yang harus Anda buat bila Anda tidak memakai library ini. Berikut ini contoh-contonya.

Menghitung nilai absolute

Perhitungan nilai absolute (nilai positif) dari sebuah bilangan dapat dilakukan dengan cara mengkalikan bilangan tersebut dengan “-1” bila bilangan tersebut adalah bilangan negatif (kurang dari nol). Sehingga, algoritma bila Anda ingin membuat fungsi absolut sendiri adalah sebagai berikut.

public static int absolute(int number) {
  if(number < 0) {
    number *= -1;
  }
  return number;
}

Anda tidak perlu bersusah payah membuatnya, apalagi untuk berbagai tipe data lainnya, karena Java telah menyediakan fungsi tersebut dalam class Math-nya. Penggunaannya cukup dengan memanggil method static-nya bernama “abs” seperti berikut ini.

public static void main(String[] args) {
  int a = -2;
  int b = 7;

  // dengan library Math
  System.out.println("Bila dengan library Math, nilai a : "+Math.abs(a));
  System.out.println("Bila dengan library Math, nilai b : "+Math.abs(b));
}

Menghitung a pangkat b

Penghitungan a pangkat b memerlukan algoritma yang sedikit lebih rumit. Ada 3 kondisi untuk penghitungannya, yaitu apabila pangkatnya (b) lebih kecil dari nol, sama dengan nol, atau lebih besar dari nol. Penghitungan untuk pangkat lebih besar dari nol dapat dilakukan dengan algoritma berikut ini.

public static int power(int number, int power) {
  int result = 1;
  if(power > 0) {
    for(int i = 0; i < power; i++) {
      result *= number;
    }
  }
  return result;
}

Lagi-lagi Anda tidak perlu bersusah payah membuat method pangkat untuk berbagai kondisi dan tipe variabel, karena Java telah menyediakannya dalam method Math.pow(). Method ini menerima parameter bertipe double, dan mengembalikan nilai bertipe double pula.

public static void main(String[] args) {
  int a = 2;
  int b = 8;

  System.out.println("Hasil pemangkatan a ^ b adalah: "+Math.pow(a, b));
}

Pembulatan bilangan desimal

Algoritma pembulatan bilangan desimal juga cukup rumit bila dibuat sendiri. Pembulatan pun ada beberapa macam, yaitu pembulatan ke atas (ceiling), pembulatan ke bawah (floor), dan pembulatan ke bilangan bulat terdekat. Java telah menyediakan method Math.ceil() untuk pembulatan ke atas, Math.floor() untuk pembulatan ke bawah, dan Math.round() untuk pembulatan ke bilangan bulat terdekat. Contoh penggunaannya adalah sebagai berikut.

public class MathRound {
  public static void main(String[] args) {
    double a = 3.71;
    double b = 3.41;

    System.out.println("a = "+a);
    System.out.println("b = "+b);
    System.out.println("Pembulatan ke atas a = "+ Math.ceil(a));
    System.out.println("Pembulatan ke atas b = "+ Math.ceil(b));
    System.out.println("Pembulatan ke bawah a = "+ Math.floor(a));
    System.out.println("Pembulatan ke bawah b = "+ Math.floor(b));
    System.out.println("Pembulatan ke terdekat a = "+ Math.round(a));
    System.out.println("Pembulatan ke terdekat b = "+ Math.round(b));
  }
}

Sinus, cosinus, dan tangen

Perhitungan sinus, cosinus, dan tangen dari sebuah sudut juga cukup rumit bila dibuat algoritmanya. Class Math menyediakan method Math.sin() untuk perhitungan sinus, Math.cos() untuk cosinus, dan Math.tan() untuk tangen. Ketiga method tersebut menerima sebuah parameter, yaitu sudut dalam bentuk radian dengan tipe data double. Untuk mendapatkan nilai radian dari sebuah nilai derajat dari sudut, Anda bisa menggunakan method Math.toRadians() dengan memasukkan derajat sudut sebagai parameter, seperti contoh berikut.

public class MathSinCosTan {
  public static void main(String[] args) {
    double angle30 = 30;
    double angle45 = 45;

    System.out.println("Sin 30 = " + Math.sin(Math.toRadians(angle30)));
    System.out.println("Cos 30 = " + Math.cos(Math.toRadians(angle30)));
    System.out.println("Tan 30 = " + Math.tan(Math.toRadians(angle30)));
    System.out.println("Sin 45 = " + Math.sin(Math.toRadians(angle45)));
    System.out.println("Cos 45 = " + Math.cos(Math.toRadians(angle45)));
    System.out.println("Tan 45 = " + Math.tan(Math.toRadians(angle45)));
  }
}

Pada contoh di atas, Anda tidak akan menemukan hasil nilai bulat ½ dari sin 30, karena tingkat presisi dari komputer cukup sulit untuk merepresentasikan bilangan desimal. Anda bisa melakukan pembulatan lebih lanjut dari hasil tersebut.

Konstanta PI

Perhitungan luas lingkaran membutuhkan nilai PI, yaitu sebuah konstanta dengan nilai berkisar 3.14159. Angka dibelakang koma dari nilai ini sebenarnya masih sangat panjang. Class Math menyediakan konstanta ini untuk Anda gunakan. Sebagai contoh, penghitungan luas lingkaran sesuai rumus standarnya menjadi sebagai berikut.

public class MathCircle {
  public static void main(String[] args) {
    int radius = 10;

    System.out.println("Luas lingkaran dengan jari-jari "+ radius +" satuan adalah " + (Math.PI * Math.pow(radius, 2)));
  }
}

Membuat angka acak/random

Class Math ini juga menyediakan method untuk membuat angka acak. Bedanya dengan cara mengacak biasa, class ini menghasilkan sebuah nilai desimal antara 0 sampai 1. Dari hasil pengacakan tersebut, Anda bisa mengkombinasikan dengan method lain untuk menghasilkan bilangan acak dalam jangka nilai tertentu. Misalkan, Anda ingin membuat bilangan acak antara 0-100 sebanyak 10 generasi, maka Anda dapat membuat algoritma program sebagai berikut.

public class MathRandom {
  public static void main(String[] args) {
    double random;

    // acak antara 0-100 sebanyak 10 kali
    for(int i = 0; i < 10; i++) {
      random = Math.random();
      System.out.println("Angka acak 0-100 generasi ke " + i + " = " + Math.floor((100 * random)));
    }
  }
}

Penutup dan referensi tambahan

Masih ada banyak method yang disediakan dalam class Math tersebut. Untuk lebih detailnya, Anda bisa membaca dokumentasinya di alamat http://download.oracle.com/javase/6/docs/api/java/lang/Math.html. Perlu diketahui juga bahwa class Math tersebut diutamakan untuk performa kecepatan proses, bukan ketelitian hasil. Untuk mendapatkan hasil lebih presisi, Anda bisa menggunakan class StrictMath yang bisa dibaca melalui dokumentasinya di alamat http://download.oracle.com/javase/6/docs/api/java/lang/StrictMath.html. Selamat mencoba!

Artikel ini pernah dipublikasikan oleh Penulis di tabloid PC Mild edisi 12/2011 lalu.
Tag: , , ,

9 Comments

Leave Comment
  1. hendro says:

    Nah akhirnya menemukan blognya mas haqqi secara tidak sengaja

  2. Choby says:

    Makasih mas atas pencerahannya..

  3. Willie says:

    om klo mau buat penjumlahan tapi inputnya bukan angka nya tapi operatornya gimana? contoh :

    angka ke-1 = 3 <—-input angka pertama adalah "3"
    angka ke-2 = 4 <—-input angka kedua adalah"4"
    masukkan operasi = * <—- input operasi adalah "*"
    hasil = 12

    tolong penjelasannya menggunakan contoh di atas.

    • edith says:

      @Willie: Kalo gitu berarti tinggal masukkan nilai angka 1 dan 2 di dua atribut int atau double trus nilai kedua atribut tsb dikali

      int angka1, angka2, hasil;
      Scanner sc = new Scanner(System.in); //untuk mengambil input

      angka1 = sc.nextInt();
      angka2 = sc.nextInt();
      hasil = angka1*angka2;

    • edith says:

      Kalau mau menggunakan operatornya sebagai masukkan tinggal disimpan aja di attribut bertipe char atau String lalu tinggal dicek dengan if, apakah jumlah, kali, kurang atau bagi…
      isi setiap badan if dengan cara operasi setiap operator

      hasil = 0;
      //jumlah
      double hasil = a+b;

      //kali
      for(int i=0; i<a; i++){
      hasil = hasil+b;
      }

      //kurang
      hasil = a-b;

      //bagi
      hasil = a/b;

  4. Frans Anderson says:

    makasih info nya mas Haqqi
    sangat berguna untuk programmer newbie spt saya hehehe

  5. Ivana Tyora Oktavian says:

    bang, kalo bikin akar persamaan kuadrat itu gimana bang? makasi

  6. Annisa says:

    itu yg membuat nilai acak/random, exceptionnya gmn ya?

Write Comment

Your email will not be published. The marked label is required.