std::nearbyint, std::nearbyintf, std::nearbyintl
| Definiert in der Header-Datei <cmath> |
||
| (1) | ||
float nearbyint ( float num ); double nearbyint ( double num ); long double nearbyint ( long double num ); |
(bis C++23) | |
| /* Gleitkommazahl-Typ */ nearbyint ( /*Gleitkommazahltyp*/ num ); |
(seit C++23) | |
float nearbyintf( float num ); |
(2) | (seit C++11) |
long double nearbyintl( long double num ); |
(3) | (seit C++11) |
| SIMD-Überladung (seit C++26) |
||
| Definiert im Header <simd> |
||
| template< /*math-floating-point*/ V > constexpr /*deduzierter-simd-t*/<V> |
(S) | (seit C++26) |
| Zusätzliche Überladungen (seit C++11) |
||
| Definiert in der Header-Datei <cmath> |
||
template< class Integer > double nearbyint ( Integer num ); |
(A) | |
std::nearbyint für alle cv-unqualifizierten Gleitkommatypen als Parametertyp bereit.(seit C++23)|
S) Die SIMD-Überladung führt ein elementweises
std::nearbyint für v_num durch.
|
(seit C++26) |
|
A) Zusätzliche Überladungen werden für alle ganzzahligen Typen bereitgestellt, die als double behandelt werden.
|
(seit C++11) |
Inhalt |
[edit] Parameter
| num | - | Gleitkomma- oder Ganzzahlwert |
[edit] Rückgabewert
Der nächste Ganzzahlwert zu num, entsprechend dem aktuellen Rundungsmodus, wird zurückgegeben.
[edit] Fehlerbehandlung
Diese Funktion unterliegt keiner der in math_errhandling spezifizierten Fehler.
Wenn die Implementierung IEEE-Gleitkomma-Arithmetik (IEC 60559) unterstützt,
- FE_INEXACT wird nie ausgelöst.
- Wenn num ±∞ ist, wird es unverändert zurückgegeben.
- Wenn num ±0 ist, wird es unverändert zurückgegeben.
- Wenn num NaN ist, wird NaN zurückgegeben.
[edit] Hinweise
Der einzige Unterschied zwischen std::nearbyint und std::rint besteht darin, dass std::nearbyint niemals FE_INEXACT auslöst.
Die größten darstellbaren Gleitkommawerte sind in allen Standard-Gleitkommaformaten exakte Ganzzahlen, daher tritt bei std::nearbyint kein Überlauf auf; das Ergebnis kann jedoch jeden Ganzzahltyp (einschließlich std::intmax_t) überlaufen, wenn es in einer Ganzzahlvariable gespeichert wird.
Wenn der aktuelle Rundungsmodus FE_TONEAREST ist, rundet diese Funktion bei Halbwertfällen auf die nächste gerade Zahl (wie std::rint, aber im Gegensatz zu std::round).
Die zusätzlichen Überladungen müssen nicht exakt wie (A) bereitgestellt werden. Sie müssen nur ausreichend sein, um sicherzustellen, dass für ihr Argument num vom Ganzzahltyp std::nearbyint(num) denselben Effekt hat wie std::nearbyint(static_cast<double>(num)).
[edit] Beispiel
#include <cfenv> #include <cmath> #include <iostream> #pragma STDC FENV_ACCESS ON int main() { std::fesetround(FE_TONEAREST); std::cout << "rounding to nearest: \n" << "nearbyint(+2.3) = " << std::nearbyint(2.3) << " nearbyint(+2.5) = " << std::nearbyint(2.5) << " nearbyint(+3.5) = " << std::nearbyint(3.5) << '\n' << "nearbyint(-2.3) = " << std::nearbyint(-2.3) << " nearbyint(-2.5) = " << std::nearbyint(-2.5) << " nearbyint(-3.5) = " << std::nearbyint(-3.5) << '\n'; std::fesetround(FE_DOWNWARD); std::cout << "rounding down:\n" << "nearbyint(+2.3) = " << std::nearbyint(2.3) << " nearbyint(+2.5) = " << std::nearbyint(2.5) << " nearbyint(+3.5) = " << std::nearbyint(3.5) << '\n' << "nearbyint(-2.3) = " << std::nearbyint(-2.3) << " nearbyint(-2.5) = " << std::nearbyint(-2.5) << " nearbyint(-3.5) = " << std::nearbyint(-3.5) << '\n'; std::cout << "nearbyint(-0.0) = " << std::nearbyint(-0.0) << '\n' << "nearbyint(-Inf) = " << std::nearbyint(-INFINITY) << '\n'; }
Ausgabe
rounding to nearest: nearbyint(+2.3) = 2 nearbyint(+2.5) = 2 nearbyint(+3.5) = 4 nearbyint(-2.3) = -2 nearbyint(-2.5) = -2 nearbyint(-3.5) = -4 rounding down: nearbyint(+2.3) = 2 nearbyint(+2.5) = 2 nearbyint(+3.5) = 3 nearbyint(-2.3) = -3 nearbyint(-2.5) = -3 nearbyint(-3.5) = -4 nearbyint(-0.0) = -0 nearbyint(-Inf) = -inf
[edit] Siehe auch
| (C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11) |
nächste ganze Zahl unter Verwendung des aktuellen Rundungsmodus mit Ausnahme, wenn das Ergebnis abweicht (Funktion) |
| (C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11)(C++11) |
nächste ganze Zahl, Rundung weg von Null bei Halbwertigkeiten (Funktion) |
| (C++11)(C++11) |
holt oder setzt die Rundungsrichtung (function) |
| C-Dokumentation für nearbyint
| |