Rabu, 04 Mei 2011

Membedakan Tipe Data Float dan Decimal pada MySQL

Antara kedua tipe data tersebut, menunjukkan bahwa keduanya bisa dimasukkan nilai desimal. Tapi untuk penerapannya adalah berbeda. Mungkin untuk mengetahui perbedaaan lebih lanjutnya, silahkan ikuti step-step berikut (saya contohkan di console):

1. Buat sebuah tabel desimal yang berisi field fa,fb,da dan db
create table desimal (fa float,fb float,da decimal(10,2), db decimal(10,2));
Struktur tabelnya harus seperti ini :
+-------+---------------+
| Field | Type          |
+-------+---------------+
| fa    | float         |
| fb    | float         |
| da    | decimal(10,2) |
| db    | decimal(10,2) |
+-------+---------------+

2. Untuk perbedaan pertama, silahkan masukkan nilai "1.2" ke semua field :
insert into desimal values (1.2,1.2,1.2,1.2);
Kemudian kita lihat isi data tabelnya :
select * from desimal
Maka kita akan tahu perbedaannya :
+------+------+------+------+
| fa   | fb   | da   | db   |
+------+------+------+------+
|  1.2 |  1.2 | 1.20 | 1.20 |
+------+------+------+------+
Terlihat kan ?? Ya. Untuk float, nilai akan ditampilkan secara menyeluruh mengikuti isi walau berapapun angka di belakang desimalnya. Sedangkan untuk decimal, nilai akan dibuat presisi mengikuti ketentuannya, yaitu 2 angka dibelakang koma.

3. Kemudian coba kita lakukan perhitungan berikut :
select da,db,da+db from desimal;
Maka hasilnya :
+------+------+-------+
| da   | db   | da+db |
+------+------+-------+
| 1.20 | 1.20 |  2.40 |
+------+------+-------+
Lalu, kita lakukan perbandingan nilai :
select da+db=2.4 from desimal;
Hasilnya :
+-----------+
| da+db=2.4 |
+-----------+
|         1 |
+-----------+
Nilai 1 menandakan true yang berarti perbandingannya adalah benar.

4. Nah, sekarang kita coba lakukan perhitungan yang float :
select fa,fb,fa+fb from desimal;
Ternyata hasilnya :
+------+------+------------------+
| fa   | fb   | fa+fb            |
+------+------+------------------+
|  1.2 |  1.2 | 2.40000009536743 |
+------+------+------------------+
Dan kalau kita lakukan perbandingan nilai :
select fa+fb=2.4 from desimal;
Ternyata hasilnya menjadi :
+-----------+
| fa+fb=2.4 |
+-----------+
|         0 |
+-----------+
Nilai 0 menandakan false yang berarti perbandingannya adalah salah.

Terlihat lagi kan ?? Jika kita menjumlahkan nilai dari tipe data decimal, maka kita pun akan mendapat nilai yang presisi juga, yaitu nilai sesuai penjumlahan. Dan saat kita membandingkan hasilnya dengan nilai yang dimaksudkan, maka akan sesuai satu dengan yang lain. Ini berarti nilai 2.4 di decimal adalah sesuai dengan nilai 2.4 di hitungan matematis. Tapi hal ini tidak berlaku di float. Jika kita menjumlahkan nilainya, maka kita akan mendapatkan nilai yang tidak presisi, dimana ada kelebihan sedikit di belakang koma nya. Dan saat kita membandingkan hasilnya dengan nilai yang kita maksud, maka tidak sesuai satu dengan yang lain. Ini berarti nilai hasil penjumlahan di float tidak sesuai dengan nilai 2.4 pada perhitungan matematis :D.

Begitulah perbedaannya. Demikian hasil analisis saya, kalau ada tambahannya, silahkan beri komentar...
Share:

5 komentar:

  1. Oh gitu ya mas,
    thx.. dibuku2 gak dijelasin nih :p

    BalasHapus
  2. Mantap mas, thanks ya udh sharing

    BalasHapus
  3. lalu kapan pakai float & kapan pakai decimal ? contoh nya?

    BalasHapus
    Balasan
    1. Klw dilihat dari percobaan di atas,ada beberapa kemungkinan kapan saat kita memakai float atau double. Mungkin saja saat pengolahan data kita lebih banyak menggunakan proses perbandingan,maka lebih bagus kalau kita menggunakan double. Atau mungkin saja saat pengolahan data kita lebih banyak menggunakan proses perhitungan, dimana dalam perhitungannya perlu hasil yang presisi,maka yang kita gunakan adalah double

      Hapus
  4. artikel diatas kita bisa tau Membedakan Tipe Data Float dan Decimal pada MySQL

    BalasHapus

Silahkan jika ada yang perlu ditanyakan :)...

Mengenai Saya

Foto saya
Saya hanyalah penikmat teknologi

Pengunjung