Bu eğitimde, örnekler yardımıyla float ve double veri türleri hakkında bilgi edineceğiz. Ayrıca aralarındaki bazı temel farklılıklara ve bunların ne zaman kullanılacağına da bakacağız.
C ++ 'da, kayan nokta değerleri için hem float
ve hem de double
veri türleri kullanılır. Kayan nokta sayıları, ondalık ve üstel değerler için kullanılır . Örneğin,
// creating float type variables float num1 = 3.0f; float num2 = 3.5f; float num3 = 3E-5f; // 3x10^-5 // creating double type variables double num4 = 3.0; double num5 = 3.5; double num6 = 3E-5; // 3x10^-5
Son eki f
veya F
bir float
değerin sonuna eklemeliyiz . Bunun nedeni, derleyicinin sonek olmadan ondalık değerleri olarak yorumlamasıdır double
.
Bu kodu düşünün.
float a = 5.6;
Burada double
bir float
değişkene bir değer verdik .
Bu durumda 5.6 , float
a değişkenine atanmadan önce derleyici tarafından otomatik olarak dönüştürülür . Bu, veri kaybına neden olabilir. Daha fazla bilgi edinmek için C ++ Tür dönüştürmeyi ziyaret edin.
Float ve Double Arasındaki Fark
yüzer | çift |
---|---|
Boyut: 4 bayt | Boyut: 8 bayt |
Kesinlik: Genel olarak 7 ondalık basamak kesinliği | Kesinlik: Genel olarak, 15 ondalık basamak kesinliği |
Örnek: 3.56f , 3e5f vs. | Örnek: 3.56 , 3e5 vs. |
Not: Belirli bir gereksiniminiz olmadıkça , değişkenler büyük sayılarla çalışırken hatalara neden olabileceğinden , her zaman double
yerine kullanın .float
float
Örnek 1: C ++ float ve double
#include #include using namespace std; int main() ( // Creating a double type variable double a = 3.912348239293; // Creating a float type variable float b = 3.912348239293f; // Printing the two variables cout << "Double Type Number = " << a << endl; cout << "Float Type Number = " << b << endl; return 0; )
Çıktı
Çift Tip Numarası = 3.91235 Float Tip Numarası = 3.91235
Not: Bu örnek için kullanılan derleyici (MinGW derleyici) 6 basamağa izin verdi. Böylece, değişken değerlerimiz derleyici tarafından yuvarlandı ve 6 haneye kısaltıldı.
Ondalık Noktaları Belirtmek için setprecision ()
Fonksiyonu cout
kullanarak yazdırılacak ondalık nokta sayısını belirleyebiliriz setprecision()
.
Bu işlev, giriş / çıkış manipülasyonuiomanip
anlamına gelen başlık dosyasında tanımlanır .
Örnek 2: Kayan Noktalı Sayılar İçin setprecision () kullanma
#include #include using namespace std; int main() ( // Creating a double type variable double a = 3.912348239293; // Creating a float type variable float b = 3.912348239293f; // Setting the precision to 12 decimal places cout << setprecision(13); // Printing the two variables cout << "Double Type Number = " << a << endl; cout << "Float Type Number = " << b << endl; return 0; )
Çıktı
Çift Tip Numarası = 3.912348239293 Kayan Tip Numarası = 3.912348270416
Yukarıdaki örnekten de görebileceğimiz gibi, hassasiyeti 13 haneye kadar belirledik.
cout << setprecision(13);
Değişkenlerimize atadığımız kayan nokta değeri de 13 haneden oluşmaktadır.
Ancak, float
yalnızca 7 basamağa kadar bir duyarlığa sahip olduğundan , kesinliği aşıldıktan sonra anlamsız değerleri gösterir .
Bizim double
değişken Şekil numarasının kendisi 13 basamaktan oluşur ederken, 15 basamaklı bir hassasiyete sahiptir, çünkü doğru sayısı.
Alternatif olarak, onları yazdırırken farklı değişkenler için farklı hassasiyetler belirleyebiliriz.
Örnek 3: Farklı Değişkenler İçin Farklı Kesinlikler
#include #include using namespace std; int main() ( // Creating a double type variable double a = 3.912348239293; // Creating a float type variable float b = 3.912348239293f; // Setting precision to 11 for double cout << "Double Type Number = " << setprecision(11) << a << endl; // Setting precision to 7 for float cout << "Float Type Number = " << setprecision(7) << b << endl; return 0; )
Çıktı
Çift Tip Numarası = 3.9123482393 Kayan Tip Numarası = 3.912348
Yukarıdaki programdan float
ve için iki farklı kesinlik değeri belirlediğimizi görebiliriz double
.
Her iki durumda da hassasiyet, sayının gerçek rakamlarından daha küçüktür. Böylece son rakam yuvarlanır ve geri kalanı kesilir.
Not: Veri türünün kendisinin kesinliğinden daha büyük bir kesinlik belirtirsek (7 için float
ve 15 için double
), o zaman derleyici, örnek 2'dekifloat
çıktıda görülebileceği gibi, kesinlik sınırı aşıldıktan sonra bize çöp değerleri verecektir. .
Üstel Sayılarla Çalışın
Yukarıda belirtildiği gibi float
ve üstel sayılarıdouble
temsil etmek için de kullanılabilir . Örneğin,
// ex = 325 X (10 25) double ex = 325E25;
C ++, üstel sayıları ve çok büyük sayıları bilimsel biçim adı verilen bir biçimde verir. Çok büyük bir sayı olduğu için ex değişkeni varsayılan olarak bu formatta çıktılanacaktır.
Bizim kayan nokta sayıları görüntülemek için C ++ zorlamak amacıyla scientific
bakılmaksızın sayısının büyüklüğü biçimi, biz biçim belirteci kullanmak scientific
içini cout
.
double num = 3.25; // ex = 325 X (10 25) double ex = 325E25; // using scientific format cout << scientific << num; cout << scientific << ex;
Buna ek olarak fixed
, kayan nokta sayılarını ondalık biçimde görüntüleyen başka bir biçim belirticisi daha vardır .
6 ondalık basamağa kadar sayıları görüntülemesi dışında, kayan noktalı sayıları yalnızca cout
olmadan kullanarak görüntülemeye benzer .setprecision()
fixed
Öte yandan, yalnızca cout
belirli bir derleyiciye göre rakamları görüntüler ( MinGW derleyicisi durumunda , ondalık noktadan önceki rakamlar dahil olmak üzere toplam 6 rakam ).
Örnek 4: Sabit ve Bilimsel Formatlar
#include #include using namespace std; int main() ( // Creating a decimal double type variable double a = 3.912348239293; // Creating an exponential double type variable double ex1 = 325e+2; // Creating a float type variable float b = 3.912348239293f; // Creating an exponential float type variable float ex2 = 325e+2f; // Displaying output with fixed cout << "Displaying Output With fixed:" << endl; cout << "Double Type Number 1 = " << fixed << a << endl; cout << "Double Type Number 2 = " << fixed << ex1 << endl; cout << "Float Type Number 1 = " << fixed << b << endl; cout << "Float Type Number 2 = " << fixed << ex2 << endl; // Displaying output with scientific cout << "Displaying Output With scientific:" << endl; cout << "Double Type Number 1 = " << scientific << a << endl; cout << "Double Type Number 2 = " << scientific << ex1 << endl; cout << "Float Type Number 1 = " << scientific << b << endl; cout << "Float Type Number 2 = " << scientific << ex2 << endl; return 0; )
Çıktı
Displaying Output With fixed: Double Type Number 1 = 3.912348 Double Type Number 2 = 32500.000000 Float Type Number 1 = 3.912348 Float Type Number 2 = 32500.000000 Displaying Output With scientific: Double Type Number 1 = 3.912348e+000 Double Type Number 2 = 3.250000e+004 Float Type Number 1 = 3.912348e+000 Float Type Number 2 = 3.250000e+004
long double
Apart from float
and double
, there is another data type that can store floating-point numbers. This is known as long double
.
It usually occupies a space of 12 bytes (depends on the computer system in use), and its precision is at least the same as double
, though most of the time, it is greater than that of double
.
long double
values should end with L
. For example,
// declaring a long double variable long double num_ldb = 2.569L;
Not: C ++ tarafından desteklenen kayan noktalı veri türleri float
, double
ve long double
. Yok long float
.