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 float a double. 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 float a double
#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ť.
