std:: trunc, std:: truncf, std:: truncl
|
Definiert in Header
<cmath>
|
||
| (1) | ||
|
float
trunc
(
float
num
)
;
double
trunc
(
double
num
)
;
|
(bis C++23) | |
|
constexpr
/*floating-point-type*/
trunc ( /*floating-point-type*/ num ) ; |
(seit C++23) | |
|
float
truncf
(
float
num
)
;
|
(2) |
(seit C++11)
(constexpr seit C++23) |
|
long
double
truncl
(
long
double
num
)
;
|
(3) |
(seit C++11)
(constexpr seit C++23) |
|
SIMD-Überladung
(seit C++26)
|
||
|
Definiert in Header
<simd>
|
||
|
template
<
/*math-floating-point*/
V
>
constexpr
/*deduced-simd-t*/
<
V
>
|
(S) | (seit C++26) |
|
Zusätzliche Überladungen
(seit C++11)
|
||
|
Definiert in Header
<cmath>
|
||
|
template
<
class
Integer
>
double trunc ( Integer num ) ; |
(A) | (constexpr seit C++23) |
std::trunc
für alle cv-unqualifizierten Gleitkommatypen als Typ des Parameters bereit.
(since C++23)
|
S)
Die SIMD-Überladung führt eine elementweise
std::trunc
auf
v_num
aus.
|
(seit C++26) |
|
A)
Zusätzliche Überladungen werden für alle Ganzzahltypen bereitgestellt, die als
double
behandelt werden.
|
(since C++11) |
Inhaltsverzeichnis |
Parameter
| num | - | Gleitkomma- oder Ganzzahlwert |
Rückgabewert
Wenn keine Fehler auftreten, wird der nächstgelegene ganzzahlige Wert zurückgegeben, der nicht größer im Betrag als num ist (mit anderen Worten, num in Richtung null gerundet).
Fehlerbehandlung
Fehler werden gemeldet, wie in math_errhandling spezifiziert.
Wenn die Implementierung IEEE-Gleitkommaarithmetik (IEC 60559) unterstützt,
- Der aktuelle Rundungsmodus hat keine Auswirkung.
- 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.
Hinweise
FE_INEXACT kann (muss aber nicht) ausgelöst werden, wenn ein nicht-ganzzahliger endlicher Wert abgeschnitten wird.
Die größten darstellbaren Gleitkommawerte sind exakte Ganzzahlen in allen standardmäßigen Gleitkommaformaten, daher läuft diese Funktion niemals allein über; jedoch kann das Ergebnis jeden Ganzzahltyp (einschließlich std::intmax_t ) überlaufen, wenn es in einer Ganzzahlvariable gespeichert wird.
Die implizite Konvertierung von Gleitkomma- zu Ganzzahltypen rundet ebenfalls gegen Null, ist jedoch auf die Werte beschränkt, die vom Zieltyp dargestellt werden können.
Die zusätzlichen Überladungen müssen nicht exakt wie (A) bereitgestellt werden. Sie müssen lediglich sicherstellen, dass für ihr Argument num vom Ganzzahltyp, std :: trunc ( num ) die gleiche Wirkung hat wie std :: trunc ( static_cast < double > ( num ) ) .
Beispiel
#include <cmath> #include <initializer_list> #include <iostream> int main() { const auto data = std::initializer_list<double> { +2.7, -2.9, +0.7, -0.9, +0.0, 0.0, -INFINITY, +INFINITY, -NAN, +NAN }; std::cout << std::showpos; for (double const x : data) std::cout << "trunc(" << x << ") == " << std::trunc(x) << '\n'; }
Mögliche Ausgabe:
trunc(+2.7) == +2 trunc(-2.9) == -2 trunc(+0.7) == +0 trunc(-0.9) == -0 trunc(+0) == +0 trunc(+0) == +0 trunc(-inf) == -inf trunc(+inf) == +inf trunc(-nan) == -nan trunc(+nan) == +nan
Siehe auch
|
(C++11)
(C++11)
|
nächstkleinere ganze Zahl
(Funktion) |
|
(C++11)
(C++11)
|
nächstgrößere ganze Zahl
(Funktion) |
|
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
|
nächstliegende ganze Zahl (bei .5 von Null weg rundend)
(Funktion) |
|
C-Dokumentation
für
trunc
|
|