Linux E X P R E S

Facebook

Programovanie v jazyku C++: Desatinné čísla a aritmetické operácie

cplusplus.png

Predstavili sme si v minulých dielach celočíselné typy premenných. Môžme ale pomyslieť v jazyku C++ na desatinné čísla? Aj o tom bude tento článok. Taktiež si na konci osviežime pravidla matematiky.


Desatinné číselne typy premenných

Určite sa každý z nás stretol s desatinnými číslami. Tieto čísla je veľmi jednoduché reprezentovať v jazyku C++. Sú známe aj ako čísla s pohyblivou rádovou čiarkou. Poznáme dve spôsoby zápisu desatinných čísel v jazyku C++.

1. spôsob: klasický, ktorý sa každý z nás stretol napríklad 3.568 atď…

2. spôsob: menej známy a má tvár napríklad 5.25E5. Čo znamená, že čiarka sa pohne dopredu o 5 miest. V reči matematiky číslo sa násobí mocninou 10. V konkrétnom príklade 5.25E5 je 525000. Vo veľkosti písmena e/E nezáleží. Ďalšie tvary sú napríklad 5.25E+5 alebo 5.25e-5. Znamienká +/- sú pri tomto definovaní nepovinné. Ak chceme číslo 0.00254, tak ho zadefinujeme pomocou – (čiže delíme mocninou 10 a zapíšeme 2.54E-3. Alebo 25.4E-4 a pod…

Typy premenných float a double

Na reprezentáciu desatinných čísel v jazyku C++ používame typy premenných floatdouble. Rozdiel medzi float a double je v presností. Viac o presností sa dočítate v tabuľke.

Poďme na príklad:

1. príklad: Otestovanie rozsahu premenných typu floatdouble

#include <iostream>   //hlavičkový súbor iostream

using namespace std;   //priestor mien

int main()   //hlavná funkcia main
{
    float prem1 = 1.55E20;   //deklarácie premenných
    double prem2 = 1.55E105;
    cout<<prem1<<"\n";   //výpis na obrazovku
    cout<<prem2<<"\n";
    return 0;   //koniec programu
}

Výsledok:

1.55e+20
1.55e+105

2. príklad: Skúsme presiahnuť rozsah:

#include <iostream>

using namespace std;

int main()
{
    float prem1 = 1.89E209;
    double prem2 = 1.89E409;
    cout<<prem1<<"\n";
    cout<<prem2<<"\n";
    return 0;
}

Výsledok: Program sa neskompiluje a dostaneme varovanie s touto hláškou:

ahoj.cpp:6:5: warning: floating constant exceeds range of ‘double’ [-Woverflow]
      double prem2 = 1.89E409

Poprípade môže dôjsť ku kompilácii (overené na CodeBlocks), kde vypíše miesto čísla inf, čiže dosiahnutie „nekonečna“ z pohľadu obmedzenej pamäte programu. Všetko zavisí od nastavenia kompilátorov. V tomto druhom príklade neručím rovnaký výsledok vo všetkých prekladačoch (a rôznych vývojových prostrediach) čiže môže alebo nemusí program skompilovať.



Aritmetické operátory

Každý by mal poznať základné aritmetické operátory, napríklad + je operátor sčítania atď. Rovnaké pravidlá platia i v jazyku C++. Operátor + sčítava, - odčítava, * násobí a / delí.

Poznáme ešte operátor %, čo v C++ predstavuje celočíselné delenie so zvyškom. Upozornenie, že pre desatinné čísla operátor % sa nepoužíva. Len celé čísla! Inak by vám kompilátor ukázal nie veľmi povzbudivú hlášku.

3. príklad: Aritmetické operátory

#include <iostream>

using namespace std;

int main()
{
    float a = 52.2564;
    float b = 5.8985;
    int c = 11;
    int d = 5;
    cout <<"Vysledok scitania cisel "<<a<<" a "<<b<<" je: "<<a+b<<"\n";
    cout <<"Vysledok odcitania cisel "<<a<<" a "<<b<<" je: "<<a-b<<"\n";
    cout <<"Vysledok nasobenia cisel "<<a<<" a "<<b<<" je: "<<a*b<<"\n";
    cout <<"Vysledok delenia cisel "<<a<<" a "<<b<<" je: "<<a/b<<"\n";
    cout <<"Vysledok celociselneho delenia so zvyskom cisel "<<c<<" a "<<d<<" 
je: "<<c%d<<"\n";
    return 0;
}

Výsledok:

Vysledok scitania cisel 52.2564 a 5.8985 je: 58.1549
 Vysledok odcitania cisel 52.2564 a 5.8985 je: 46.3579
 Vysledok nasobenia cisel 52.2564 a 5.8985 je: 308.234
 Vysledok delenia cisel 52.2564 a 5.8985 je: 8.85927
 Vysledok celociselneho delenia so zvyskom cisel 11 a 5 je: 1

Kto má prednosť?

Z matematiky poznáte, že ak máme viacero čísel a viacero aritmetických operátorov, tak násobenie a delenie má prednosť pred sčítaním a odčítaním. Je tomu tak i v jazyku C++?

4. príklad:

#include <iostream>

using namespace std;

int main()
{
    float a = 10.1;
    float b = 21.4;
    float c = 31.7;
    cout <<a*b-c<<"\n";
    return 0;
}

Výsledok:

184.44

Rozbor programu: Vidíte, že zákony matematiky platia aj v jazyku C++. Vďaka za pravidla, matematiky, bez nej by to bol fakt chaos sa v tom všetkom vyznať.

Diskuze (0) Nahoru