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
Défini dans l'en-tête <cmath>
(1)
float trunc ( float num ) ;

double trunc ( double num ) ;

long double trunc ( long double num ) ;
(jusqu'à C++23)
constexpr /*floating-point-type*/
trunc ( /*floating-point-type*/ num ) ;
(depuis C++23)
float truncf ( float num ) ;
(2) (depuis C++11)
(constexpr depuis C++23)
long double truncl ( long double num ) ;
(3) (depuis C++11)
(constexpr depuis C++23)
Surcharge SIMD (depuis C++26)
Défini dans l'en-tête <simd>
template < /*math-floating-point*/ V >

constexpr /*deduced-simd-t*/ < V >

trunc ( const V & v_num ) ;
(S) (depuis C++26)
Défini dans l'en-tête <cmath>
template < class Integer >
double trunc ( Integer num ) ;
(A) (constexpr depuis C++23)
1-3) Calcule l'entier le plus proche de magnitude inférieure ou égale à num . La bibliothèque fournit des surcharges de std::trunc pour tous les types à virgule flottante non qualifiés cv comme type du paramètre. (depuis C++23)
S) La surcharge SIMD effectue un std::trunc élément par élément sur v_num .
(Voir math-floating-point et deduced-simd-t pour leurs définitions.)
(depuis C++26)
A) Des surcharges supplémentaires sont fournies pour tous les types entiers, qui sont traités comme double .
(depuis C++11)

Table des matières

Paramètres

num - valeur à virgule flottante ou entière

Valeur de retour

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

Valeur de retour
math-trunc.svg
num

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 num est ±∞, il est retourné, non modifié.
  • Si num est ±0, il est retourné, non modifié.
  • Si num 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 dépasse jamais sa propre capacité ; cependant le résultat peut dépasser la capacité de tout type entier (y compris std::intmax_t ), lorsqu'il est stocké dans une variable entière.

La conversion implicite des types à 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.

Les surcharges supplémentaires ne sont pas requises d'être fournies exactement comme (A) . Elles doivent seulement être suffisantes pour garantir que pour leur argument num de type entier, std :: trunc ( num ) ait le même effet que std :: trunc ( static_cast < double > ( num ) ) .

Exemple

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

Sortie possible :

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

Voir aussi

(C++11) (C++11)
entier le plus proche non supérieur à la valeur donnée
(fonction)
(C++11) (C++11)
entier le plus proche non inférieur à la valeur donnée
(fonction)
(C++11) (C++11) (C++11) (C++11) (C++11) (C++11) (C++11) (C++11) (C++11)
entier le plus proche, en arrondissant à l'écart de zéro dans les cas médians
(fonction)