Namensräume
Varianten
Aktionen

std::floor, std::floorf, std::floorl

Von cppreference.com
< cpp‎ | numeric‎ | math
 
 
 
 
Definiert in der Header-Datei <cmath>
(1)
float       floor ( float num );

double      floor ( double num );

long double floor ( long 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>

            floor ( const V& v_num );
(S) (seit C++26)
Definiert in der Header-Datei <cmath>
template< class Integer >
double      floor ( Integer num );
(A) (constexpr seit C++23)
1-3) Berechnet den größten ganzzahligen Wert, der nicht größer als num ist. Die Bibliothek stellt Überladungen von 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.
(Siehe math-floating-point und deduced-simd-t für ihre Definitionen.)
(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⌋.

Rückgabewert
math-floor.svg
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) [bearbeiten]
(C++11)(C++11)(C++11)
nächste ganze Zahl, die nicht größer im Betrag ist als der gegebene Wert
(Funktion) [bearbeiten]
(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) [bearbeiten]
C-Dokumentation für floor