Namespaces
Variants

trunc, truncf, truncl

From cppreference.net
< c ‎ | numeric ‎ | math
Common mathematical functions
Functions
Basic operations
(C99)
(C99)
(C99)
(C99) (C99) (C99) (C23)
Maximum/minimum operations
Exponential functions
Power functions
Trigonometric and hyperbolic functions
Nearest integer floating-point
(C99) (C99) (C99)
trunc
(C99)

(C99) (C99) (C99)
(C23) (C23) (C23) (C23)
Floating-point manipulation
Narrowing operations
(C23)
(C23)
(C23)
(C23)
(C23)
(C23)
Quantum and quantum exponent
Decimal re-encoding functions
Total order and payload functions
Classification
Error and gamma functions
(C99)
(C99)
(C99)
(C99)
Types
Macro constants
Special floating-point values
Arguments and return values
Error handling
Fast operation indicators
Definiert im Header <math.h>
float truncf ( float arg ) ;
(1) (seit C99)
double trunc ( double arg ) ;
(2) (seit C99)
long double truncl ( long double arg ) ;
(3) (seit C99)
Definiert im Header <tgmath.h>
#define trunc( arg )
(4) (seit C99)
1-3) Berechnet die nächstgelegene Ganzzahl, die nicht größer im Betrag ist als arg .
4) Typgenerisches Makro: Wenn arg den Typ long double hat, wird truncl aufgerufen. Andernfalls, wenn arg einen ganzzahligen Typ oder den Typ double hat, wird trunc aufgerufen. Andernfalls wird truncf aufgerufen.

Inhaltsverzeichnis

Parameter

arg - Gleitkommawert

Rückgabewert

Wenn keine Fehler auftreten, wird der nächstgelegene ganzzahlige Wert zurückgegeben, der im Betrag nicht größer als arg ist (mit anderen Worten, arg in Richtung null gerundet).

Rückgabewert
math-trunc.svg
Argument

Fehlerbehandlung

Fehler werden gemeldet, wie in math_errhandling festgelegt.

Wenn die Implementierung IEEE-Gleitkommaarithmetik (IEC 60559) unterstützt:

  • Der aktuelle Rundungsmodus hat keine Auswirkung.
  • Wenn arg ±∞ ist, wird es unverändert zurückgegeben.
  • Wenn arg ±0 ist, wird es unverändert zurückgegeben.
  • Wenn arg 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 Fließkommawerte sind exakte Ganzzahlen in allen Standard-Fließkommaformaten, daher überläuft diese Funktion niemals allein; jedoch kann das Ergebnis jeden Ganzzahltyp (einschließlich intmax_t ) überlaufen, wenn es in einer Ganzzahlvariablen gespeichert wird.

Die implizite Konvertierung von Gleitkommazahlen zu Ganzzahltypen rundet ebenfalls gegen Null, ist jedoch auf die Werte beschränkt, die vom Zieltyp dargestellt werden können.

Beispiel

#include <math.h>
#include <stdio.h>
int main(void)
{
    printf("trunc(+2.7) = %+.1f\n", trunc(+2.7));
    printf("trunc(-2.7) = %+.1f\n", trunc(-2.7));
    printf("trunc(-0.0) = %+.1f\n", trunc(-0.0));
    printf("trunc(-Inf) = %+f\n",   trunc(-INFINITY));
}

Mögliche Ausgabe:

trunc(+2.7) = +2.0
trunc(-2.7) = -2.0
trunc(-0.0) = -0.0
trunc(-Inf) = -inf

Referenzen

  • C23-Standard (ISO/IEC 9899:2024):
  • 7.12.9.8 Die trunc-Funktionen (S.: TBD)
  • 7.25 Typgenerische Mathematik <tgmath.h> (S.: TBD)
  • F.10.6.8 Die trunc-Funktionen (S.: TBD)
  • C17-Standard (ISO/IEC 9899:2018):
  • 7.12.9.8 Die trunc-Funktionen (S.: TBD)
  • 7.25 Typgenerische Mathematik <tgmath.h> (S.: TBD)
  • F.10.6.8 Die trunc-Funktionen (S.: TBD)
  • C11-Standard (ISO/IEC 9899:2011):
  • 7.12.9.8 Die trunc-Funktionen (S. 253-254)
  • 7.25 Typgenerische Mathematik <tgmath.h> (S. 373-375)
  • F.10.6.8 Die trunc-Funktionen (S. 528)
  • C99-Standard (ISO/IEC 9899:1999):
  • 7.12.9.8 Die trunc-Funktionen (S. 234)
  • 7.22 Typgenerische Mathematik <tgmath.h> (S. 335-337)
  • F.9.6.8 Die trunc-Funktionen (S. 464)

Siehe auch

berechnet die größte Ganzzahl, die nicht größer als der gegebene Wert ist
(Funktion)
(C99) (C99)
berechnet die kleinste Ganzzahl, die nicht kleiner als der gegebene Wert ist
(Funktion)
(C99) (C99) (C99) (C99) (C99) (C99) (C99) (C99) (C99)
rundet zur nächsten Ganzzahl, bei Mittelwerten weg von Null
(Funktion)