std::floor, std::floorf, std::floorl
| Definiert in der Header-Datei <cmath> |
||
| (1) | ||
float floor ( float num ); double floor ( double num ); |
(bis C++23) | |
| constexpr /*Gleitkommazahl-Typ*/ floor ( /*Gleitkomma-Typ*/ num ); |
(seit C++23) | |
float floorf( float num ); |
(2) | (seit C++11) (constexpr seit C++23) |
long double floorl( long double num ); |
(3) | (seit C++11) (constexpr seit C++23) |
| 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 floor ( Integer num ); |
(A) | (constexpr seit C++23) |
std::floor für alle cv-unqualifizierten Gleitkommatypen als Parametertyp zur Verfügung.(seit C++23)|
S) Die SIMD-Überladung führt eine elementweise
std::floor auf v_num aus.
|
(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
Wenn keine Fehler auftreten, wird der größte ganzzahlige Wert zurückgegeben, der nicht größer als num ist, d. h. ⌊num⌋.
[edit] Fehlerbehandlung
Fehler werden wie in math_errhandling beschrieben gemeldet.
Wenn die Implementierung IEEE-Gleitkomma-Arithmetik (IEC 60559) unterstützt,
- Der aktuelle Rundungsmodus hat keinen Einfluss.
- 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
FE_INEXACT kann ausgelöst werden (muss aber nicht), wenn ein nicht-ganzzahliger endlicher Wert gerundet wird.
Die größten darstellbaren Gleitkommazahlen sind in allen Standard-Gleitkommaformaten exakte ganze Zahlen. Daher führt diese Funktion keinen eigenen Überlauf durch; das Ergebnis kann jedoch jeden ganzzahligen Typ (einschließlich std::intmax_t) überlaufen, wenn es in einer ganzzahligen Variable gespeichert wird.
Die zusätzlichen Überladungen müssen nicht exakt wie in (A) bereitgestellt werden. Sie müssen nur ausreichen, um sicherzustellen, dass für ihr Argument num vom ganzzahligen Typ std::floor(num) den gleichen Effekt hat wie std::floor(static_cast<double>(num)).
[edit] Beispiel
#include <cmath> #include <iostream> int main() { std::cout << std::fixed << "floor(+2.7) = " << std::floor(+2.7) << '\n' << "floor(-2.7) = " << std::floor(-2.7) << '\n' << "floor(-0.0) = " << std::floor(-0.0) << '\n' << "floor(-Inf) = " << std::floor(-INFINITY) << '\n'; }
Ausgabe
floor(+2.7) = 2.000000 floor(-2.7) = -3.000000 floor(-0.0) = -0.000000 floor(-Inf) = -inf
[edit] Siehe auch
| (C++11)(C++11) |
nächste ganze Zahl, die nicht kleiner ist als der gegebene Wert (Funktion) |
| (C++11)(C++11)(C++11) |
nächste ganze Zahl, die nicht größer im Betrag ist als der gegebene Wert (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-Dokumentation für floor
| |