C ++ float a double

V tomto návode sa pomocou príkladov dozvieme o floatových a dvojitých údajových typoch. Pozrime sa tiež na niektoré kľúčové rozdiely medzi nimi a na to, kedy ich použiť.

V C ++ sa pre hodnoty s pohyblivou rádovou čiarkou používajú oba typy floata doubledátové typy. Čísla s pohyblivou rádovou čiarkou sa používajú pre desatinné a exponenciálne hodnoty. Napríklad,

 // 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

Musíme pridať príponu falebo Fna koniec floathodnoty. Je to preto, že kompilátor interpretuje desatinné hodnoty bez prípony ako double.

Zvážte tento kód.

 float a = 5.6;

Tu sme premennej priradili doublehodnotu float.

V takom prípade je kompilátor automaticky prevedený na 5,6float predtým, ako je priradený k premennej a. Môže to mať za následok stratu údajov. Ak sa chcete dozvedieť viac, navštívte Prevod typu C ++.

Rozdiel medzi float a double

plavák dvojitý
Veľkosť: 4 bajty Veľkosť: 8 bajtov
Presnosť: Všeobecne platí presnosť na 7 desatinných miest Presnosť: Všeobecne platí presnosť na 15 desatinných miest
Príklad: 3.56f , 3e5fatď. Príklad: 3.56 , 3e5atď.

Poznámka: Ak nemáte konkrétnu požiadavku, vždy používajte doublenamiesto float, pretože floatpremenné môžu byť náchylné na chyby pri práci s veľkým počtom.

Príklad 1: C ++ float a 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; )

Výkon

 Dvojité číslo typu = 3,91235 Číslo typu plaváka = 3,91235

Poznámka: Kompilátor použitý v tomto príklade (kompilátor MinGW) má povolených 6 číslic. Takže naše hodnoty premenných boli kompilátorom zaokrúhlené a skrátené na 6 číslic.

setprecision () na zadanie desatinných miest

coutPomocou setprecision()funkcie môžeme určiť počet desatinných miest na vytlačenie .

Táto funkcia je definovaná v iomaniphlavičkovom súbore, ktorý označuje manipuláciu so vstupom / výstupom .

Príklad 2: Použitie setprecision () pre čísla s pohyblivou rádovou čiarkou

 #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; )

Výkon

 Double Type Number = 3.912348239293 Float Type Number = 3.912348270416

Ako vidíme z vyššie uvedeného príkladu, špecifikovali sme presnosť až na 13 číslic.

 cout << setprecision(13);

Hodnota s pohyblivou rádovou čiarkou, ktorú sme priradili našim premenným, sa tiež skladá z 13 číslic.

Pretože floatmá však presnosť až 7 číslic, po prekročení presnosti zobrazuje hodnoty smetí .

Naša doublepremenná zobrazuje správne číslo, pretože má presnosť 15 číslic, zatiaľ čo samotné číslo pozostáva z 13 číslic.

Ako alternatívu môžeme určiť rôzne presnosti pre rôzne premenné pri ich tlači.

Príklad 3: Rôzne presnosti pre rôzne premenné

 #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; )

Výkon

 Dvojité číslo typu = 3,9123482393 Číslo typu plaváka = 3,912348

Z vyššie uvedeného programu vidíme, že sme nastavili dve rôzne hodnoty presnosti pre floata double.

V obidvoch prípadoch je presnosť menšia ako skutočné číslice čísla. Posledná číslica sa teda zaokrúhli a zvyšok sa skráti.

Poznámka: Ak zadáme presnosť väčšiu ako presnosť samotného dátového typu (7 pre floata 15 pre double), potom nám kompilátor po prekročení limitu presnosti poskytne hodnoty smetí, ako je to vidieť na floatvýstupe v príklade 2. .

Práca s exponenciálnymi číslami

Ako bolo uvedené vyššie, floata doublemôžu byť tiež použité na reprezentáciu mocniny . Napríklad,

 // ex = 325 X (10 25) double ex = 325E25;

C ++ vydáva exponenciálne čísla a veľmi veľké čísla vo formáte, ktorý sa nazýva vedecký formát. Premenná ex sa v tomto formáte predvolene zobrazí, pretože ide o veľmi veľké číslo.

Aby sme nútili C ++ zobrazovať naše čísla s pohyblivou rádovou čiarkou vo scientificformáte bez ohľadu na veľkosť čísla, použijeme scientificvo vnútri špecifikátor formátu cout.

 double num = 3.25; // ex = 325 X (10 25) double ex = 325E25; // using scientific format cout << scientific << num; cout << scientific << ex;

Okrem toho je k dispozícii ďalší špecifikátor formátu fixed, ktorý zobrazuje čísla s pohyblivou rádovou čiarkou v desatinnom formáte.

Je to podobné ako pri zobrazovaní čísel s pohyblivou rádovou čiarkou iba pri použití coutbez setprecision(), okrem skutočnosti, že sa fixedzobrazujú čísla až do 6 desatinných miest.

Na druhej strane iba pomocou coutzobrazenia číslic podľa konkrétneho kompilátora (6 celkových číslic v prípade kompilátora MinGW , vrátane číslic pred desatinnou čiarkou).

Príklad 4: Fixné a vedecké formáty

 #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; )

Výkon

 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;

Poznámka: V s plávajúcou desatinnou čiarkou dátové typy podporované C ++, sú float, doublea long double. Neexistuje žiadna long float.

Zaujímavé články...