/*************************************************************************************************************************************/ /* */ /* I M P R E S S I O N H E X A - D E C I M A L E D ' U N E V A L E U R F L O T T A N T E : */ /* */ /* */ /* Author of '$xcg/FloatHexa$vv$K' : */ /* */ /* Jean-Francois COLONNA (LACTAMME, 20040323093921). */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* I N T E R F A C E ' listG ' : */ /* */ /* */ /* :Debut_listG: */ /* :Fin_listG: */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* D I R E C T I V E S S P E C I F I Q U E S D E C O M P I L A T I O N : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* F I C H I E R S D ' I N C L U D E S : */ /* */ /*************************************************************************************************************************************/ #include INCLUDES_MINI /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* P A R A M E T R E S : */ /* */ /*************************************************************************************************************************************/ #define LE_NOMBRE_FLOTTANT_EST_EN_Float \ VRAI \ /* Le nombre flottant est-il en double ('VRAI') ou en simple ('FAUX') precision ? */ #define ENTRER_UN_NOMBRE_FLOTTANT \ VRAI \ /* Faut-il entrer un nombre flottant ('VRAI') ou deux nombes hexa-decimaux ('FAUX') ? */ #define NOMBRE_FLOTTANT \ FZERO \ /* Nombre a convertir. */ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* M A C R O S U T I L E S : */ /* */ /*************************************************************************************************************************************/ /*===================================================================================================================================*/ /*************************************************************************************************************************************/ /* */ /* I M P R E S S I O N H E X A - D E C I M A L E D ' U N E V A L E U R F L O T T A N T E : */ /* */ /*************************************************************************************************************************************/ BCommande(nombre_d_arguments,arguments) /*-----------------------------------------------------------------------------------------------------------------------------------*/ Bblock DEFV(Logical,INIT(le_nombre_flottant_est_en_Float,LE_NOMBRE_FLOTTANT_EST_EN_Float)); /* Le nombre flottant est-il en double ('VRAI') ou en simple ('FAUX') precision ? */ DEFV(Logical,INIT(entrer_un_nombre_flottant,ENTRER_UN_NOMBRE_FLOTTANT)); /* Entrer un nombre flottant ('VRAI') ou deux nombes hexa-decimaux ('FAUX') ? */ DEFV(FloatInt,nombre_flottant_en_Float); DEFV(flint,nombre_flottant_en_vrai_Float_de_base); /* Nombre a convertir en 'Float' et en 'vrai_Float_de_base'... */ /*..............................................................................................................................*/ EGAL(FloatInt_Float(nombre_flottant_en_Float),NOMBRE_FLOTTANT); EGAL(flint_FloaT(nombre_flottant_en_vrai_Float_de_base),NOMBRE_FLOTTANT); #if ( (defined(SYSTEME_APC_LinuxDebian_GCC)) \ || (defined(SYSTEME_APC_LinuxMandrake_GCC)) \ || (defined(SYSTEME_APC_LinuxRedHat_GCC)) \ || (defined(SYSTEME_APC_LinuxUbuntu_GCC)) \ || (defined(SYSTEME_APC_LinuxUbuntu_ICC)) \ || (defined(SYSTEME_APC_LinuxUlmint_GCC)) \ || (defined(SYSTEME_APC_LinuxUlmint_ICC)) \ ) GET_ARGUMENTS_(nombre_d_arguments ,BLOC(GET_ARGUMENT_L("double=""Float=",le_nombre_flottant_est_en_Float); GET_ARGUMENT_N("simple=",le_nombre_flottant_est_en_Float); GET_ARGUMENT_L("flottant=""float=",entrer_un_nombre_flottant); GET_ARGUMENT_N("int=""hexa=""entier=",entrer_un_nombre_flottant); GET_ARGUMENT_F("xd=""x=",FloatInt_Float(nombre_flottant_en_Float)); GET_ARGUMENT_I("i1=",FloatInt_Int_2(nombre_flottant_en_Float)); GET_ARGUMENT_I("i2=",FloatInt_Int_1(nombre_flottant_en_Float)); GET_ARGUMENT_I("i=",flint_InT(nombre_flottant_en_vrai_Float_de_base)); /* ATTENTION : a la permutation {1,2} : */ /* */ /* "i1=" --> FloatInt_Int_2(...) */ /* . . */ /* /|\ /|\ */ /* | | */ /* ------------------------------ */ /* */ /* */ /* "i2=" --> FloatInt_Int_1(...) */ /* . . */ /* /|\ /|\ */ /* | | */ /* ------------------------------ */ /* */ /* due a la structure des informations sur les MACHINEs de type 'APC'... */ ) ); Test(EST_VRAI(le_nombre_flottant_est_en_Float)) Bblock Test(IL_FAUT(entrer_un_nombre_flottant)) Bblock CAL2(Prin2("0x%08x 0x%08x",FloatInt_Int_2(nombre_flottant_en_Float),FloatInt_Int_1(nombre_flottant_en_Float))); /* ATTENTION : a l'ordre inverse de 'FloatInt_Int_2(...)' qui precede 'FloatInt_Int_1(...)', */ /* ce qui est a la structure des informations sur les MACHINEs de type 'APC'... */ Eblock ATes Bblock CAL2(Prin1("%+.^^^",FloatInt_Float(nombre_flottant_en_Float))); /* Le 20060105153232, le format "16g" est passe a "^^g" pour plus de souplesse... */ /* */ /* Le 20091123123018, le format "^^g" est passe a "^^^" pour plus de souplesse... */ Eblock ETes Eblock ATes Bblock Test(IL_FAUT(entrer_un_nombre_flottant)) Bblock EGAL(flint_FloaT(nombre_flottant_en_vrai_Float_de_base),FloatInt_Float(nombre_flottant_en_Float)); CAL2(Prin1("0x%08x",flint_InT(nombre_flottant_en_vrai_Float_de_base))); Eblock ATes Bblock CAL2(Prin1("%+.8g",flint_FloaT(nombre_flottant_en_vrai_Float_de_base))); Eblock ETes Eblock ETes #Aif ( (defined(SYSTEME_APC_LinuxDebian_GCC)) \ || (defined(SYSTEME_APC_LinuxMandrake_GCC)) \ || (defined(SYSTEME_APC_LinuxRedHat_GCC)) \ || (defined(SYSTEME_APC_LinuxUbuntu_GCC)) \ || (defined(SYSTEME_APC_LinuxUbuntu_ICC)) \ || (defined(SYSTEME_APC_LinuxUlmint_GCC)) \ || (defined(SYSTEME_APC_LinuxUlmint_ICC)) \ ) GET_ARGUMENTS_(nombre_d_arguments ,BLOC(GET_ARGUMENT_L("double=""Float=",le_nombre_flottant_est_en_Float); GET_ARGUMENT_N("simple=",le_nombre_flottant_est_en_Float); GET_ARGUMENT_L("flottant=""float=",entrer_un_nombre_flottant); GET_ARGUMENT_N("int=""hexa=""entier=",entrer_un_nombre_flottant); GET_ARGUMENT_F("x=",FloatInt_Float(nombre_flottant_en_Float)); GET_ARGUMENT_F("xd=",FloatInt_Float(nombre_flottant_en_Float)); GET_ARGUMENT_I("i1=",FloatInt_Int_1(nombre_flottant_en_Float)); GET_ARGUMENT_I("i2=",FloatInt_Int_2(nombre_flottant_en_Float)); GET_ARGUMENT_I("i=",flint_InT(nombre_flottant_en_vrai_Float_de_base)); ) ) Test(EST_VRAI(le_nombre_flottant_est_en_Float)) Bblock Test(IL_FAUT(entrer_un_nombre_flottant)) Bblock CAL2(Prin2("0x%08x 0x%08x",FloatInt_Int_1(nombre_flottant_en_Float),FloatInt_Int_2(nombre_flottant_en_Float))); Eblock ATes Bblock CAL2(Prin1("%+.^^^",FloatInt_Float(nombre_flottant_en_Float))); /* Le 20060105153232, le format "16g" est passe a "^^g" pour plus de souplesse... */ /* */ /* Le 20091123123018, le format "^^g" est passe a "^^^" pour plus de souplesse... */ Eblock ETes Eblock ATes Bblock Test(IL_FAUT(entrer_un_nombre_flottant)) Bblock EGAL(flint_FloaT(nombre_flottant_en_vrai_Float_de_base),FloatInt_Float(nombre_flottant_en_Float)); CAL2(Prin1("0x%08x",flint_InT(nombre_flottant_en_vrai_Float_de_base))); Eblock ATes Bblock CAL2(Prin1("%+.8g",flint_FloaT(nombre_flottant_en_vrai_Float_de_base))); Eblock ETes Eblock ETes #Eif ( (defined(SYSTEME_APC_LinuxDebian_GCC)) \ || (defined(SYSTEME_APC_LinuxMandrake_GCC)) \ || (defined(SYSTEME_APC_LinuxRedHat_GCC)) \ || (defined(SYSTEME_APC_LinuxUbuntu_GCC)) \ || (defined(SYSTEME_APC_LinuxUbuntu_ICC)) \ || (defined(SYSTEME_APC_LinuxUlmint_GCC)) \ || (defined(SYSTEME_APC_LinuxUlmint_ICC)) \ ) CAL2(Prin0("\n")); RETU_Commande; Eblock ECommande