std:: fegetround, std:: fesetround
|
Definiert im Header
<cfenv>
|
||
|
int
fesetround
(
int
round
)
|
(1) | (seit C++11) |
|
int
fegetround
(
)
|
(2) | (seit C++11) |
Verwaltet die Rundungsrichtung für Gleitkommazahlen.
round
einzustellen, von dem erwartet wird, dass es sich um eines der
Gleitkomma-Rundungsmakros
handelt.
Inhaltsverzeichnis |
Parameter
| round | - | Rundungsrichtung, eine der Gleitkomma-Rundungsmakros |
Rückgabewert
1) 0 bei Erfolg, andernfalls ungleich Null.
2) Das Gleitkomma-Rundungsmakro beschreibt die aktuelle Rundungsrichtung oder einen negativen Wert, wenn die Richtung nicht bestimmt werden kann.
Hinweise
Der aktuelle Rundungsmodus, der die Auswirkungen des zuletzt durchgeführten
fesetround
widerspiegelt, kann auch mit
FLT_ROUNDS
abgefragt werden.
Siehe floating-point rounding macros für die Auswirkungen des Rundens.
Beispiel
#include <cfenv> #include <cmath> #include <iomanip> #include <iostream> #include <utility> // #pragma STDC FENV_ACCESS ON int main() { static constexpr std::pair<const char*, const double> samples[] { {" 12.0", 12.0}, {" 12.1", 12.1}, {"-12.1", -12.1}, {" 12.5", 12.5}, {"-12.5", -12.5}, {" 12.9", 12.9}, {"-12.9", -12.9}, {" 13.0", 13.0} }; std::cout << "│ sample │ FE_DOWNWARD │ FE_UPWARD │ FE_TONEAREST │ FE_TOWARDZERO │\n"; for (const auto& [str, fp] : samples) { std::cout << "│ " << std::setw(6) << str << " │ "; for (const int dir : {FE_DOWNWARD, FE_UPWARD, FE_TONEAREST, FE_TOWARDZERO}) { std::fesetround(dir); std::cout << std::setw(10) << std::fixed << std::nearbyint(fp) << " │ "; } std::cout << '\n'; } }
Ausgabe:
│ sample │ FE_DOWNWARD │ FE_UPWARD │ FE_TONEAREST │ FE_TOWARDZERO │ │ 12.0 │ 12.000000 │ 12.000000 │ 12.000000 │ 12.000000 │ │ 12.1 │ 12.000000 │ 13.000000 │ 12.000000 │ 12.000000 │ │ -12.1 │ -13.000000 │ -12.000000 │ -12.000000 │ -12.000000 │ │ 12.5 │ 12.000000 │ 13.000000 │ 12.000000 │ 12.000000 │ │ -12.5 │ -13.000000 │ -12.000000 │ -12.000000 │ -12.000000 │ │ 12.9 │ 12.000000 │ 13.000000 │ 13.000000 │ 12.000000 │ │ -12.9 │ -13.000000 │ -12.000000 │ -13.000000 │ -12.000000 │ │ 13.0 │ 13.000000 │ 13.000000 │ 13.000000 │ 13.000000 │
Siehe auch
|
(C++11)
(C++11)
(C++11)
|
nächstliegende Ganzzahl unter Verwendung des aktuellen Rundungsmodus
(Funktion) |
|
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
|
nächstliegende Ganzzahl unter Verwendung des aktuellen Rundungsmodus mit
Ausnahme, wenn das Ergebnis abweicht (Funktion) |
|
C-Dokumentation
für
fegetround
,
fesetround
|
|