std::ceil, std::ceilf, std::ceill
| Definiert in der Header-Datei <cmath> |
||
| (1) | ||
float ceil ( float num ); double ceil ( 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> |
(S) | (seit C++26) |
| Zusätzliche Überladungen (seit C++11) |
||
| Definiert in der Header-Datei <cmath> |
||
template< class Integer > double ceil ( Integer num ); |
(A) | (constexpr seit C++23) |
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.
|
(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⌉.
[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) |
| (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++11)(C++11)(C++11) |
nächste ganze Zahl 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ächste ganze Zahl unter Verwendung des aktuellen Rundungsmodus mit Ausnahme, wenn das Ergebnis abweicht (Funktion) |
| C-Dokumentation für ceil
| |
[edit] Externe Links
| Schnelles Aufrunden einer Ganzzahl-Division — StackOverflow |