Namespaces
Variants

std:: trunc, std:: truncf, std:: truncl

From cppreference.net
Common mathematical functions
Nearest integer floating point operations
trunc
(C++11)
(C++11)
(C++11) (C++11) (C++11)
Floating point manipulation functions
(C++11) (C++11)
(C++11)
(C++11)
Classification and comparison
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
(C++11)
Types
(C++11)
(C++11)
(C++11)
Macro constants
Definiert in Header <cmath>
(1)
float trunc ( float num ) ;

double trunc ( double num ) ;

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

trunc ( const V & v_num ) ;
(S) (seit C++26)
Definiert in Header <cmath>
template < class Integer >
double trunc ( Integer num ) ;
(A) (constexpr seit C++23)
1-3) Berechnet die nächstgelegene Ganzzahl, die nicht größer im Betrag ist als num . Die Bibliothek stellt Überladungen von 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.
(Siehe math-floating-point und deduced-simd-t für deren Definitionen.)
(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).

Rückgabewert
math-trunc.svg
num

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)