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 adalahFloat
. - double — Tipe data berukuran 64-bit (8 byte) yang dapat menampung 15 hingga 16 angka di belakang koma. Tipe primitifnya
double
sedangkan bentuk objeknya adalahDouble
.
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:
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:
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:
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.
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:
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:
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 👋