Misteri Tipe Data Double/Float

Halo temans, bila kamu sedang mendesain database, pastikan mulai sekarang gunakan tipe data decimal untuk menyimpan angka pecahan. Jangan lagi pakai tipe data double maupun float. Kenapa? Silakan lihat gambar berikut:

Tipe Double Aneh
Tipe Double Aneh

Perhatikan baris Perlakuan DIHASILKAN pada bulan Oktober, angka yang seharusnya 0,00004 malah tersimpan sebagai 4E-5. Perhatikan pula baris untuk Perlakuan DISIMPAN DI TPS pada bulan Desember. Bila dihitung manual dengan rumus

TPS Des = TPS Nov + Dihasilkan Des - (Dimanfaatkan+Diolah+Landfill+Diserahkan+Tidakdikelola) Des\newline\newline TPS Des = 0.00095 + 0 - (0+0+0+0.00095+0) = 0

maka seharusnya hasil perhitungan DISIMPAN DI TPS di bulan Desember adalah 0, bukan -1.0842021724855E-19. Aneh kan? bigsmile

Nah, karena di database tersimpan seperti itu, maka waktu ditampilkan, hasilnya akan menjadi seperti ini:

Siplah - Tipe Double Aneh
Siplah – Tipe Double Aneh

Kurang tahu pasti, apa penyebabnya, tapi menurut pak Victor, itu salah satu sifat tipe data double/float dalam menyimpan floating pointnya. Lebih aman pakai tipe decimal. Jangan lupa tentukan juga nilai floating point yang akan disimpan, misal dua angka di belakang koma berarti menggunakan tipe decimal(20,2).

Update: Pada database MySql, ternyata tipe double bisa ditentukan nilai floating pointnya, misal double(20,2). Sedang di SQL Server tidak bisa. Seprtinya pada mysql, masalah ini bisa diatasi dengan cara ini. Entahlah.

Tetap Sehat, Tetap Semangat, agar dapat Tetap dalam Perdjoeangan!!

Credit: Victor Utomo

Hartadi

I’m a Passionate Programmer ;)

Leave a Reply