Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Získá nebo nastaví aktuální režim zaokrouhlování s plovoucí desetinou čárkou.
Syntaxe
int fegetround(void);
int fesetround(int round_mode);
Parametry
round_mode
Režim zaokrouhlování, který se nastaví, jako jedno z maker s plovoucí desetinou čárkou. Pokud se hodnota nerovná jednomu z maker zaokrouhlování s plovoucí desetinou čárkou, režim zaokrouhlování se nezmění.
Vrácená hodnota
Při úspěchu fegetround vrátí režim zaokrouhlování jako jednu z hodnot makra s plovoucí desetinou čárkou. Pokud aktuální režim zaokrouhlování nelze určit, vrátí zápornou hodnotu.
Při úspěchu fesetround vrátí hodnotu 0. V opačném případě se vrátí nenulová hodnota.
Poznámky
Operace s plovoucí desetinou čárkou můžou používat jeden z několika režimů zaokrouhlování. Tyto režimy určují, ve kterém směru se výsledky operací s plovoucí desetinou čárkou zaokrouhlují směrem k uložení výsledků. Tady jsou názvy a chování maker s plovoucí desetinou čárkou definovaných v <souboru fenv.h>:
| Makro | Popis |
|---|---|
FE_DOWNWARD |
Zaokrouhlení směrem k zápornému nekonečnu. |
FE_TONEAREST |
Zaokrouhlete směrem k nejbližšímu. |
FE_TOWARDZERO |
Zaokrouhlte směrem k nule. |
FE_UPWARD |
Zaokrouhlení směrem k kladnému nekonečnu. |
Výchozí chování FE_TONEAREST je zaokrouhlit výsledky uprostřed mezi reprezentovatelnými hodnotami směrem k nejbližší hodnotě s nejmenším (0) nejméně významným bitem.
Aktuální režim zaokrouhlování má vliv na tyto operace:
- Převody řetězců.
- Výsledky aritmetických operátorů s plovoucí desetinou čárkou mimo konstantní výrazy.
- Funkce zaokrouhlování knihovny, například
rintanearbyint. - Vrátí hodnoty ze standardních matematických funkcí knihovny.
Aktuální režim zaokrouhlení nemá vliv na tyto operace:
- Funkce
trunc,ceilafloorlroundknihovny. - Plovoucí desetiny na celé číslo implicitní přetypování a převody, které vždy zaokrouhlují směrem k nule.
- Výsledky aritmetických operátorů s plovoucí desetinou čárkou ve výrazech konstant, které vždy zaokrouhlují na nejbližší hodnotu.
Pokud chcete tyto funkce použít, musíte vypnout optimalizace s plovoucí desetinou čárkou, které by mohly zabránit přístupu pomocí #pragma fenv_access(on) direktivy před voláním. Další informace najdete na webu fenv_access.
Důležité
Před Windows 10 verze 14393 definované fenv.h FE_UPWARD = 0x0100 a FE_DOWNWARD = 0x0200. Ve Windows verze 14393 byla tato hlavička aktualizována tak, aby řešila chybu, ve které by některá rozhraní API interpretovala FE_UPWARD jako FE_DOWNWARDa naopak. Počínaje Windows verze 14393 FE_UPWARD = 0x0200 a FE_DOWNWARD = 0x0100vrácením předchozích hodnot zpět.
Pokud jste zkompilovali aplikaci proti staré verzi sady Windows SDK (tento problém závisí na verzi sady SDK, nikoli na verzi operačního systému nebo verzi VS), může k tomuto problému dojít. Aktualizujte aplikaci tak, aby cílila na nejnovější sadu Windows SDK, aby definice FE_UPWARD a FE_DOWNWARD byly konzistentní s implementací Windows. Pokud nemůžete aktualizovat aplikaci tak, aby cílila na novější sadu Windows SDK, můžete ji definovat FE_UPWARD jako 0x0100 a FE_DOWNWARD jako 0x0200 v kódu.
Požadavky
| Function | Záhlaví jazyka C | Hlavička jazyka C++ |
|---|---|---|
fegetround, fesetround |
<fenv.h> |
<cfenv> |
Další informace naleznete v tématu Kompatibilita.
Viz také
Abecední odkaz na funkci
nearbyint, , nearbyintfnearbyintl
rint, , rintfrintl
lrint, lrintf, lrintl, llrint, , llrintfllrintl