Float ve double arasındaki fark nedir?

Çift duyarlılık ve tek duyarlılık arasındaki fark hakkında bir şeyler okudum. Ancak, çoğu durumda, float ve double birbirinin yerine kullanılabilir gibi görünüyor, yani birini veya diğerini kullanmak sonuçları etkilemiyor gibi görünüyor. Durum gerçekten böyle mi? Float ve double ne zaman birbirinin yerine kullanılabilir? Aralarındaki farklar nelerdir?

İşte C99 (ISO-IEC 9899 6.2.5 §10) veya C++2003 (ISO-IEC 14882-2003 3.1.9 §8) standartları ne diyor:

Üç kayan nokta türü vardır: float,doublevelong double. double türü en az float kadar hassasiyet sağlar ve long double türü en az double kadar hassasiyet sağlar. floattüründeki değerler kümesi,doubletüründeki değerler kümesinin bir alt kümesidir;doubletüründeki değerler kümesi,long double` türündeki değerler kümesinin bir alt kümesidir.

C++ standardı ekler:

Kayan nokta tiplerinin değer gösterimi uygulama tanımlıdır.

IEEE kayan nokta standardını derinlemesine ele alan mükemmel What Every Computer Scientist Should Know About Floating-Point Arithmetic kitabına bir göz atmanızı tavsiye ederim. Temsil detaylarını öğrenecek ve büyüklük ile hassasiyet arasında bir değiş tokuş olduğunu fark edeceksiniz. Büyüklük azaldıkça kayan nokta gösteriminin hassasiyeti artar, bu nedenle -1 ile 1 arasındaki kayan nokta sayıları en fazla hassasiyete sahip olanlardır.

Yorumlar (0)
  • Bir double 64 ve tek hassasiyetlidir (float) 32 bittir.
  • Double daha büyük bir mantissa'ya (gerçek sayının tamsayı bitleri) sahiptir.
  • Herhangi bir yanlışlık double'da daha küçük olacaktır.
Yorumlar (0)

Floatlar, double'lardan daha az hassasiyete sahiptir. Zaten biliyor olsanız da, daha iyi anlamak için Kayan Noktalı Aritmetik Hakkında Bilmemiz Gerekenler bölümünü okuyun.

Yorumlar (2)