C ++ float ve double

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 floatve hem de doubleveri 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 fveya Fbir floatdeğ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 doublebir floatdeğişkene bir değer verdik .

Bu durumda 5.6 , floata 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 , 3e5fvs. Örnek: 3.56 , 3e5vs.

Not: Belirli bir gereksiniminiz olmadıkça , değişkenler büyük sayılarla çalışırken hatalara neden olabileceğinden , her zaman doubleyerine kullanın .floatfloat

Ö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 coutkullanarak 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, floatyalnızca 7 basamağa kadar bir duyarlığa sahip olduğundan , kesinliği aşıldıktan sonra anlamsız değerleri gösterir .

Bizim doubledeğ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 floatve 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 floatve 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 floatve ü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 scientificbakılmaksızın sayısının büyüklüğü biçimi, biz biçim belirteci kullanmak scientificiç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 coutolmadan kullanarak görüntülemeye benzer .setprecision()fixed

Öte yandan, yalnızca coutbelirli 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, doubleve long double. Yok long float.

Ilginç makaleler...