Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé

Arrondis décimaux

Environnement flottant Pragmas de contrôle


Entête à inclure

#include <fenv.h>  // <cfenv> en C++

C23 ajoute des éléments dédiés aux types flottants décimaux IEC 60559. Ces éléments ne sont disponibles que si l'implémentation définit __STDC_IEC_60559_DFP__. Leur rôle est comparable à fegetround et fesetround, mais pour les opérations décimales.

Macros d'arrondi décimal

Macro Description
FE_DEC_DOWNWARD Arrondi décimal vers le bas.
FE_DEC_TONEAREST Arrondi décimal au plus proche.
FE_DEC_TONEARESTFROMZERO Arrondi décimal au plus proche, avec départ de zéro en cas d'égalité.
FE_DEC_TOWARDZERO Arrondi décimal vers zéro.
FE_DEC_UPWARD Arrondi décimal vers le haut.

Fonctions associées

int fe_dec_getround( void );

int fe_dec_setround( int rnd );

fe_dec_getround renvoie la direction d'arrondi décimal dynamique. fe_dec_setround tente de modifier cette direction. Les deux fonctions ne sont déclarées que lorsque les flottants décimaux sont supportés.

Exemple de code

Le programme suivant illustre le test de disponibilité des flottants décimaux avant d'utiliser les fonctions C23.

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
#include <fenv.h>
#include <stdio.h>

int main() {

#ifdef __STDC_IEC_60559_DFP__
    if ( fe_dec_setround( FE_DEC_TONEAREST ) == 0 ) {
        printf( "Arrondi decimal courant : %d\n", fe_dec_getround() );
    }
#else
    puts( "Flottants decimaux non disponibles" );
#endif

    return 0;
}
Tester le support des arrondis décimaux

Sur une plate-forme ne fournissant pas cette extension, le programme affiche simplement le message suivant.

Flottants decimaux non disponibles

Sujets connexes

Arrondis binaires
Environnement flottant
Exceptions en virgule flottante
Pragmas de contrôle


Environnement flottant Pragmas de contrôle




Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé