V programovacím jazyce C++ existuje několik způsobů, jak odvodit desetinné číslo se správnou přesností. V tomto článku se podíváme na jednu z nich, konkrétně na použití funkce std::setprecision ze standardní knihovny .
Například k odvodu čísla 3.14159 s přesností na 1 číslici za čárkou můžeme napsat následující kód:
Po spuštění tohoto kódu bude na obrazovce zobrazeno číslo 3.1, protože jsme uvedli přesnost na 1 číslici za čárkou. Pokud chceme číslo odvodit s větší přesností, například s přesností na 3 číslice za čárkou, můžeme jej přenést do funkce std::setprecision hodnota 3: std::setprecision(3).
Níže je uveden příklad kódu, který demonstruje použití těchto funkcí:
V důsledku provedení tohoto kódu bude vyvedeno číslo 3.1.
Pokud se například číslo rovná 3.1415 a přesnost je nastavena na 2 číslice za desetinnou čárkou, pak se číslo zobrazí jako 3.14. Pokud je přesnost nastavena na 5 číslic, zobrazí se celé číslo 3.1415.
Funkce tedy std::fixed a std::setprecision umožňují ovládat zobrazení desetinných čísel v C++.
Pojem desetinného čísla
Například v čísle 123,3 desetinná soustava představuje následující pozice a hmotnosti:
- 1-vybití stovek (10 na stupeň 2)
- 2-vybití desítek (10 na stupeň 1)
- 3-výboj jednotek (10 na stupeň 0)
- 3-vybití desetin (10 v stupni -1)
Číslo 123,3 tedy představuje součet děl číslic čísla na jejich hmotnosti:
1 * 10^2 + 2 * 10^1 + 3 * 10^0 + 3 * 10^(-1) = 100 + 20 + 3 + 0,3 = 123,3
Desetinná čísla jsou v každodenním životě široce používána k reprezentaci zlomkových hodnot, peněžních částek, atd.
Desetinné číslo: definice a vlastnosti
Desetinná čísla, známá také jako plovoucí desetinná čísla, jsou čísla, která mohou obsahovat desetinná místa. Umožňují reprezentovat čísla s velmi velkými nebo velmi malými hodnotami s přesností na jednu číslici.
#include #include int main()
Tento kód vyšle číslo 3.1, kde přesnost po čárce je jedna číslice.
Zvláštností práce s desetinnými čísly v C++ je, že mohou ztratit přesnost v důsledku omezení reprezentace čísel s plovoucí desetinnou čárkou v paměti počítače. Proto při operacích nad desetinnými čísly, zejména při dělení a násobení, může dojít k zaokrouhlení a ztrátě přesnosti.
Pro snížení ztráty přesnosti při práci s desetinnými čísly v C++ se doporučuje použít datový typ long double, který představuje čísla s větší přesností, ale vyžaduje více paměti.
| Obchod | Příklad | Výsledek |
|---|---|---|
| Sčítání | 3.1 + 2.4 | 5.5 |
| Odčítání | 5.6 - 3.2 | 2.4 |
| Násobení | 2.5 * 3.2 | 8.0 |
| Dělení | 6.3 / 2.1 | 3.0 |
Pokud například chceme odvodit číslo 3.14159 s přesností na jednu číslici za čárkou, můžeme použít následující kód:
#include using namespace std;int main()
Число с точностью до 1 цифры после запятой: 3.1
Pro použití manipulátoru std::setprecision () je nutné zahrnout hlavičkový soubor iomanip s následující směrnicí:
Příklad použití manipulátoru:
V tomto příkladu bude číslo odvozeno s přesností na jednu číslici za čárkou. Pokud chcete změnit přesnost na jinou hodnotu, stačí změnit argument funkce std::setprecision().
Zaokrouhlení čísla
Jedním ze způsobů zaokrouhlení čísla je použití funkce round . Funkce round přijímá desetinné číslo na vstup a vrací jeho zaokrouhlenou hodnotu s přesností na nejbližší celé číslo.
Zde je příklad použití funkce round k zaokrouhlení čísla:
double number = 3.14159;double roundedNumber = round(number);std::cout
Zde je příklad použití funkce setprecision k zaokrouhlení čísla:
double number = 3.14159;std::cout
V závislosti na požadavcích konkrétního úkolu lze zvolit nejvhodnější způsob zaokrouhlení čísla s přesností na jednu číslici.
Jak zaokrouhlit desetinné číslo
Zaokrouhlení desetinného čísla v programovacím jazyce C++ lze provést pomocí různých matematických funkcí. Níže jsou uvedeny příklady použití těchto funkcí:
| Funkce | Popis |
|---|---|
| round() | Zaokrouhluje číslo na nejbližší celou hodnotu |
| floor() | Zaokrouhluje číslo na nejbližší menší celek |
| ceil() | Zaokrouhluje číslo na nejbližší větší celou hodnotu |
Příklad použití funkce round () k zaokrouhlení desetinného čísla:
double number = 3.85;
double roundedNumber = round(number);