Mengenal Tipe Data Float pada Java

baca 4 menit
Mengenal Tipe Data Float pada Java

Setelah mengenal tipe data integer, kali ini kita akan membahas tentang tipe data numerik lainnya, yaitu float.

Tentang Tipe Data Float

Floating Points atau biasa disebut float merupakan tipe data standar yang dapat menampung bilangan desimal. Kalau integer hanya bisa menampung bilangan bulat, float ini bisa menampung bilangan pecahan juga. Contohnya: 1.5, 2.2, 3.14, dan lain sebagainya.

Sub Tipe Data Float

Tipe data ini dapat dibagi lagi menjadi 2 berdasarkan presisinya — banyaknya angka di belakang koma, yaitu:

  • float — Tipe data berukuran 32-bit (4 byte) yang dapat menampung 6 hingga 7 angka di belakang koma. Tipe primitifnya float sedangkan bentuk objeknya adalah Float.
  • double — Tipe data berukuran 64-bit (8 byte) yang dapat menampung 15 hingga 16 angka di belakang koma. Tipe primitifnya double sedangkan bentuk objeknya adalah Double.

Bisa kita lihat, semakin tinggi presisinya semakin besar ukurannya. Karena komputer sekarang yang semakin canggih, penggunaan double tidak memberi perbedaan yang signifikan dibanding float. Namun ada baiknya untuk "menghemat" memori kita menggunakan float sebisa mungkin.

Literal Float

Literal float adalah semua angka real. Meliputi bilangan positif, negatif, bulat, pecahan, dan nol.

Tidak seperti lazimnya angka desimal di Indonesia yang dipisahkan dengan koma (,), angka desimal pada Java dipisahkan dengan titik (.).

Contohnya saja:

java
double PI = 3.141592653589793; // 15 angka di belakang koma

float  tiga  = 3;   // bilangan bulat
double empat = 4.0; // bilangan bulat

Menggunakan Penanda Huruf

Kita juga bisa menambahkan huruf f atau d untuk menandakan bahwa bilangan tersebut merupakan float atau double. Hal ini sangat disarankan sebagai penanda tipe data suatu literal.

Contohnya saja:

java
float  pi = 3.141592f;          // akhiran `f` harus ada
double PI = 3.141592653589793d; // akhiran `d` opsional

float  tiga  = 3f;   // akhiran `f` opsional
float  empat = 4.0f; // akhiran `f` harus ada
double lima  = 5d;   // akhiran `d` opsional

Secara default Java akan membaca bilangan desimal sebagai tipe data double, oleh karena itu perlu akhiran f sebagai penanda bahwa literal tersebut adalah float. Jika tidak maka program akan error, karena Java tidak bisa mengkonversi double ke float data secara otomatis.

Dalam melakukan operasi bilangan — khususnya pembagian — tanda ini sangat penting karena dapat mempengaruhi hasil perhitungan. Akan kita bahas lebih lanjut pada bagian selanjutnya.

Menggunakan Notasi Saintifik

Literal float juga bisa dibuat dengan notasi saintifik. Kalau lupa, notasi saintifik itu yang menggunakan perkalian pangkat 10. Lebih lanjut bisa dilihat di sini.

Java menggunakan notasi e untuk menuliskan literal. Contohnya seperti ini:

java
double seribu  = 1e3;  // 1 * 10^3 = 1000
float  duaJuta = 2e6f; // 2 * 10^6 = 2000000

double bilanganKecil  = 7e-10; // 0.0000000007
float  bilanganKecil2 = 4e-5f; // 0.00004

Operasi pada Tipe Data Float

Semua operasi yang bisa diterapkan pada integer bisa diterapkan juga pada float. Ada aritmatika, assignment aritmatika, dan juga unary operator. Lebih lanjut bisa dilihat di pembahasan sebelumnya.

Mungkin yang sedikit membedakan adalah operasi pembagiannya. Seperti yang kita singgung sebelumnya, pembubuhan huruf f atau d dapat berpengaruh terhadap hasil perhitungan.

Mari kita lihat contohnya.

java
public class TipeDataFloat{
  public static void main(String[] args) {
    float a = 22;
    float b = 7;
    float hasil = a / b;

    System.out.printf("hasil dari %.2f / %.2f adalah %.2f", a, b, hasil);
  }
}

Perhatian! huruf f di atas bukan bagian dari literal float, melainkan bagian dari template string untuk mencetak tipe data float. Lebih lanjut bisa dibaca di sini

Kalau dijalankan maka hasilnya akan seperti ini:

hasil dari 22.00 / 7.00 adalah 3.14

Sejauh ini aman ya.

Sekarang kita coba isikan variabel hasil dengan operasi pembagian literal integer. Kita akan ubah kode di atas menjadi seperti ini:

java
public class TipeDataFloat{
  public static void main(String[] args) {
    float hasil = 22 / 7;

    System.out.printf("hasil dari 22 / 7 adalah %.2f", hasil);
  }
}

Sekarang coba jalankan kode tersebut dan lihat hasilnya. Pasti hasil perhitungannya akan salah. Alih-alih mencetak angka 3.14 malah mencetak angka 3.00.

hasil dari 22 / 7 adalah 3.00

Nah loh kenapa bisa begitu?

Ini karena kita menggunakan literal integer untuk melakukan pembagian. Ingat, operasi pembagian pada integer pasti akan dibulatkan, tidak bisa menghasilkan bilangan desimal.

Akibatnya adalah pembagian integer 22 dan 7 — yang menghasilkan angka bulat 3 — dimasukkan ke dalam variabel hasil. Sehingga yang masuk ke variabel hasil adalah murni hasil perhitungan integer tanpa memperdulikan tipe data dari variabel hasil.

Nah untuk mengatasi masalah ini kita bisa menggunakan literal float dengan membubuhkan huruf f di belakang angka. Sehingga kodenya berubah menjadi seperti ini:

java
public class TipeDataFloat{
  public static void main(String[] args) {
    float hasil = 22f / 7f;
    // bisa juga ditulis `22f / 7` atau `22 / 7f`
    // tapi supaya konsisten sebaiknya bubuhkan `f` di keduanya

    System.out.printf("hasil dari 10 / 8 adalah %.2f", hasil);
  }
}

Selanjutnya

Setelah rampung 2 tipe data numerik pada Java (integer dan float), selanjutnya kita akan beralih ke tipe data yang bisa menampung huruf dan karakter.

Selanjutnya kita akan membahas tentang tipe data 'char' pada bahasa Java.

Semoga bermanfaat, selamat berkoding ria 👋