přejít na obsah přejít na navigaci

Linux E X P R E S, Programovanie v jazyku C++: Desatinné čísla a aritmetické operácie

Cimatron

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ť.

Nahoru

Přidat téma diskuse

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz

Eduard Boldižár

Eduard Boldižár

Som redaktorom stránky astrotech.cz. Mám 25 rokov. Medzi moje záľuby patrí astronómia, sci-fi literatúra a programovanie.


  • Distribuce: ubuntu
  • Grafické prostředí: unity



Public Relations

Domény a nepřeberné množství internetových adres s možností jejich zneužití

dnnsecNepropásněte sérii webinářů zaměřených na aktuální bezpečnostní trendy a jednotnou správu zabezpečení vaše IT – každé pondělí a zdarma.
S doménami přijde do kontaktu naprosto každý uživatel internetu, ačkoliv si to asi neuvědomuje. Už jenom samotné hledání na internetu je spojené s doménami, o nakupování v internetových obchodech ani nemluvě. Věděli jste však, že domény mohou být poměrně jednoduše napadeny?

Pokračování ...


EDU Trainings

Public Relations

Vyplatí se investice do SEO agentury?

QNAPObjevili jste zajímavý sortiment zboží, po kterém je na trhu poptávka. Čekala vás dlouhá práce, ale byli jste úspěšní a spustili e-shop. Veškeré zboží má perfektně zpracované fotografie a dokonalý popis. Vše je přehledné, jednoduché na ovládání a s poutavou grafikou. Proč u vás nikdo nenakupuje? Proč navštěvují konkurenční stránky, kde mají vyšší cenu, a dokonce řadu chyb v textu? Nejspíš proto, že vás zákazníci nemají kde najít. Nejste na svém trhu přítomni.

Pokračování ...


Redakční blog

Pavel Fric

Pavel Fric, 21. srpen

Sayonara Player 1.5.1

Přehrávač, jak má být. Poslední dobou vývoj šlape


Pavel Fric

Pavel Fric, 26. leden

MuseScore 3

První aktualizace třetí řady notačního editoru MuseScore


Redakce

Redakce, 21. prosinec

Pište pro LinuxEXPRES

Baví vás Linux? Pište o něm, není to nic těžkého. LinuxEXPRES hledá nové autory.


Všechny blogy »

SOPHOS - hacking webinar 2