Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Následující verze | Předchozí verze | ||
ccpp:round [2020/05/25 11:13] – vytvořeno bures | ccpp: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, | int zaokrouhlene, | ||
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); | ||
+ | </ | ||
+ | |||
+ | ===== S použitím knihovny ===== | ||
+ | Alternativně můžeme použít knihovní funkci '' | ||
+ | |||
+ | <code c> | ||
+ | // Verze C | ||
+ | #include < | ||
+ | //... | ||
+ | float cislo = roundf(1.65f); | ||
+ | double cislo2 = round(4.2); | ||
+ | </ | ||
+ | |||
+ | <code c> | ||
+ | // Verze C++ | ||
+ | #include < | ||
+ | //... | ||
+ | // C++ využívá přetěžování funkcí, ale stále existuje i fce roundf | ||
+ | float cislo = std:: | ||
+ | double cislo2 = std:: | ||
</ | </ |