MySQL Float ve Decimal veri tipleri

Float ve Decimal veri tipleri arasında ufacık! bir fark var... :)

Yazıyı okumadan önce isterseniz MySQL dokümanlarını incelemek isteyebilirsiniz.

http://dev.mysql.com/doc/refman/5.1/en/floating-point-types.html

http://dev.mysql.com/doc/refman/5.1/en/fixed-point-types.html


Şimdi gelelim bu iki veri tipi arasındaki ufacık! farkı görmeye.

Bir tablo oluşturalım. Tablomuzda float ve decimal tipinde 2 alanımız olsun:

create table float_decimal(f float(10,2), d decimal(10,2));

Oluşturduğumuz tabloya örnek bir veri ekleyelim:

insert into float_decimal values (5.33, 5.33);

Her iki alana da 5,33 değerini yükledik.

Şimdi de 2 basit sorgu yazalım ve sonuçları inceleyelim:

select (1.0000000000*f) from float_decimal;

+------------------+
| (1.0000000000*f) |
+------------------+
|     5.3299999237 |
+------------------+
1 row in set (0.00 sec)
select (1.0000000000*d) from float_decimal;
+------------------+
| (1.0000000000*d) |
+------------------+
|   5.330000000000 |
+------------------+
1 row in set (0.00 sec)

Dikkat ettiyseniz, decimal tipi tam istediğimiz sonucu verdi.

Ama float tipi kendi kafasına göre takılmış gibi görünüyor. smiley

Bu durumdan şu sonucu çıkarabiliriz: Özellikle para ile ilgili bilgileri tablomuzda tutmak için float kullanmamalıyız!

Kayan noktalı sayı olarak tanımlayabileceğimiz float tipi, bilgisayarın fiziki özelliklerine ve işletim sistemine bağlı olarak beklediğimizden farklı değerler tutabiliyor.

Benden söylemesi....