#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.
| 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. |
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.
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; } |
Sur une plate-forme ne fournissant pas cette extension, le programme affiche simplement le message suivant.
Flottants decimaux non disponibles
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 :