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
Défini dans l'en-tête <math.h>
float truncf ( float arg ) ;
(1) (depuis C99)
double trunc ( double arg ) ;
(2) (depuis C99)
long double truncl ( long double arg ) ;
(3) (depuis C99)
Défini dans l'en-tête <tgmath.h>
#define trunc( arg )
(4) (depuis C99)
1-3) Calcule l'entier le plus proche dont la magnitude n'est pas supérieure à arg .
4) Macro générique de type : Si arg a le type long double , truncl est appelé. Sinon, si arg a un type entier ou le type double , trunc est appelé. Sinon, truncf est appelé.

Table des matières

Paramètres

arg - valeur en virgule flottante

Valeur de retour

Si aucune erreur ne se produit, la valeur entière la plus proche dont la magnitude n'est pas supérieure à arg (en d'autres termes, arg arrondie vers zéro), est retournée.

Valeur de retour
math-trunc.svg
Argument

Gestion des erreurs

Les erreurs sont signalées comme spécifié dans math_errhandling .

Si l'implémentation prend en charge l'arithmétique à virgule flottante IEEE (IEC 60559) :

  • Le mode d'arrondi actuel n'a aucun effet.
  • Si arg est ±∞, il est retourné, non modifié.
  • Si arg est ±0, il est retourné, non modifié.
  • Si arg est NaN, NaN est retourné.

Notes

FE_INEXACT peut être (mais n'est pas obligatoirement) déclenchée lors de la troncation d'une valeur finie non entière.

Les plus grandes valeurs représentables en virgule flottante sont des entiers exacts dans tous les formats standard de virgule flottante, donc cette fonction ne provoque jamais de dépassement de capacité par elle-même ; cependant le résultat peut dépasser la capacité de tout type entier (y compris intmax_t ), lorsqu'il est stocké dans une variable entière.

La conversion implicite des nombres à virgule flottante vers les types entiers arrondit également vers zéro, mais est limitée aux valeurs pouvant être représentées par le type cible.

Exemple

#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));
}

Sortie possible :

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

Références

  • Norme C23 (ISO/CEI 9899:2024) :
  • 7.12.9.8 Les fonctions trunc (p: TBD)
  • 7.25 Mathématiques génériques de type <tgmath.h> (p: TBD)
  • F.10.6.8 Les fonctions trunc (p: TBD)
  • Norme C17 (ISO/CEI 9899:2018) :
  • 7.12.9.8 Les fonctions trunc (p: TBD)
  • 7.25 Mathématiques génériques de type <tgmath.h> (p: TBD)
  • F.10.6.8 Les fonctions trunc (p: TBD)
  • Norme C11 (ISO/CEI 9899:2011) :
  • 7.12.9.8 Les fonctions trunc (p: 253-254)
  • 7.25 Mathématiques génériques de type <tgmath.h> (p: 373-375)
  • F.10.6.8 Les fonctions trunc (p: 528)
  • Norme C99 (ISO/CEI 9899:1999) :
  • 7.12.9.8 Les fonctions trunc (p: 234)
  • 7.22 Mathématiques génériques de type <tgmath.h> (p: 335-337)
  • F.9.6.8 Les fonctions trunc (p: 464)

Voir aussi

calcule le plus grand entier inférieur ou égal à la valeur donnée
(fonction)
(C99) (C99)
calcule le plus petit entier supérieur ou égal à la valeur donnée
(fonction)
(C99) (C99) (C99) (C99) (C99) (C99) (C99) (C99) (C99)
arrondit à l'entier le plus proche, en s'éloignant de zéro pour les cas médians
(fonction)