Namensräume
Varianten
Aktionen

std::ceil, std::ceilf, std::ceill

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

double      ceil ( double num );

long double ceil ( long double num );
(bis C++23)
constexpr /*Gleitkommazahl-Typ*/
            ceil ( /*Gleitkommazahl*/ num );
(seit C++23)
float       ceilf( float num );
(2) (seit C++11)
(constexpr seit C++23)
long double ceill( 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>

            ceil ( const V& v_num );
(S) (seit C++26)
Definiert in der Header-Datei <cmath>
template< class Integer >
double      ceil ( Integer num );
(A) (constexpr seit C++23)
1-3) Berechnet den kleinsten ganzzahligen Wert, der nicht kleiner ist als num. Die Bibliothek stellt Überladungen von std::ceil für alle cv-unqualifizierten Gleitkommatypen als Parametertyp bereit.(seit C++23)
S) Die SIMD-Überladung führt eine elementweise std::ceil auf v_num durch.
(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 kleinste ganzzahlige Wert zurückgegeben, der nicht kleiner als num ist, d.h. ⌈num⌉.

Rückgabewert
math-ceil.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] Anmerkungen

FE_INEXACT kann ausgelöst werden (muss aber nicht), wenn ein nicht-ganzzahliger endlicher Wert gerundet wird.

Die größten darstellbaren Gleitkommawerte sind exakte ganze Zahlen in allen Standard-Gleitkommaformaten, daher gibt es bei dieser Funktion keinen eigenen Überlauf; das Ergebnis kann jedoch jeden Ganzzahltyp (einschließlich std::intmax_t) überlaufen, wenn es in einer Ganzzahlvariable gespeichert wird. Aus diesem Grund ist der Rückgabetyp eine Gleitkommazahl und keine Ganzzahl.

Diese Funktion (für ein double-Argument) verhält sich, als ob sie (mit Ausnahme der Freiheit, FE_INEXACT nicht auszulösen) durch den folgenden Code implementiert wäre

#include <cfenv>
#include <cmath>
#pragma STDC FENV_ACCESS ON
 
double ceil(double x)
{
    int save_round = std::fegetround();
    std::fesetround(FE_UPWARD);
    double result = std::rint(x); // or std::nearbyint
    std::fesetround(save_round);
    return result;
}

Die zusätzlichen Überladungen müssen nicht exakt wie (A) bereitgestellt werden. Sie müssen nur ausreichen, um sicherzustellen, dass für ihr Argument num vom ganzzahligen Typ std::ceil(num) denselben Effekt hat wie std::ceil(static_cast<double>(num)).

[edit] Beispiel

#include <cmath>
#include <iostream>
 
int main()
{
    std::cout << std::fixed
              << "ceil(+2.4) = " << std::ceil(+2.4) << '\n'
              << "ceil(-2.4) = " << std::ceil(-2.4) << '\n'
              << "ceil(-0.0) = " << std::ceil(-0.0) << '\n'
              << "ceil(-Inf) = " << std::ceil(-INFINITY) << '\n';
}

Ausgabe

ceil(+2.4) = 3.000000
ceil(-2.4) = -2.000000
ceil(-0.0) = -0.000000
ceil(-Inf) = -inf

[edit] Siehe auch

(C++11)(C++11)
nächste ganze Zahl, die nicht größer 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++11)(C++11)(C++11)
nächste ganze Zahl unter Verwendung des aktuellen Rundungsmodus
(Funktion) [bearbeiten]
(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) [bearbeiten]
C-Dokumentation für ceil

[edit] Externe Links

Schnelles Aufrunden einer Ganzzahl-Division — StackOverflow