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:: | ||
| </ | </ | ||