ccpp:round

Rozdíly

Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.

Odkaz na výstup diff

Následující verze
Předchozí verze
ccpp:round [2020/05/25 11:13] – vytvořeno buresccpp:round [2022/11/21 13:22] (aktuální) – [Bez použití knihovny] bures
Řádek 1: Řádek 1:
 ====== Zaokrouhlování na celá čísla ====== ====== Zaokrouhlování na celá čísla ======
 +Někdy je třeba danou hodnotu v datovém typu s plovoucí čárkou aritmeticky správně zaokrouhlit.
 +
 +===== Bez použití knihovny =====
 +Můžeme využít faktu, že při implicitní konverzi z čísla s plovoucí čárkou na celé číslo dojde k zahození desetinné části. Přičteme k libovolnému číslu 0.5 a přetypujeme.
 +
 <code c> <code c>
 int zaokrouhlene, zaokrouhlene2; int zaokrouhlene, zaokrouhlene2;
 float cislo = 1.4f; float cislo = 1.4f;
 float cislo2 = 1.5f; float cislo2 = 1.5f;
-zaokrouhlene = cislo + 0.5f; +// Je třeba explicitně přetypovat datový typ na int. 
-zaokrouhlene2 = cislo2 + 0.5f;+zaokrouhlene = (int)(cislo + 0.5f)
 +zaokrouhlene2 = (int)(cislo2 + 0.5f); 
 +</code> 
 + 
 +===== S použitím knihovny ===== 
 +Alternativně můžeme použít knihovní funkci ''round(f)'', která je celá postavená na číslech s plovoucí čárkou. [[https://en.cppreference.com/w/cpp/numeric/math/round|std::round]] 
 + 
 +<code c> 
 +// Verze C 
 +#include <math.h> 
 +//... 
 +float cislo = roundf(1.65f); 
 +double cislo2 = round(4.2); 
 +</code> 
 + 
 +<code c> 
 +// Verze C++ 
 +#include <cmath> 
 +//... 
 +// C++ využívá přetěžování funkcí, ale stále existuje i fce roundf 
 +float cislo = std::round(1.65f); 
 +double cislo2 = std::round(4.2);
 </code> </code>
  • ccpp/round.1590398002.txt.gz
  • Poslední úprava: 2020/05/25 11:13
  • autor: bures