Tester si un nombre est un float ou pas

dorras7 Messages postés 63 Date d'inscription dimanche 15 mars 2009 Statut Membre Dernière intervention 23 décembre 2010 - 26 août 2009 à 10:09
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 26 août 2009 à 15:36
Salut,
j'ai besoin de connaitre si un nombre est un float ou pas

4 réponses

ed73 Messages postés 276 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 avril 2013 2
26 août 2009 à 10:40
Bonjour,

Commence par regarder si le nombre est égal à sa partie entière et est compris entre int.MinValue et int.MinValue, si oui c'est un entier. Même chose avec long.MinValue et long.MaxValue

Puis si le nombre est compris entre float.MinValue et MaxValue alors c'est peut-être un float. Je dis peut-être car le nombre peut être compris entre ces 2 valeurs mais posséder un nombre de décimales incompatible avec la précision des float, plus faible que celle des double. Dans ce cas tu peux essayer de caster ton nombre en float puis en double à nouveau et regarder si les 2 nombres sont égaux.

ed73
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
26 août 2009 à 11:43
if (i.GetType() == typeof(float))
{
//C'est un float
}
0
ed73 Messages postés 276 Date d'inscription lundi 8 septembre 2008 Statut Membre Dernière intervention 15 avril 2013 2
26 août 2009 à 12:15
GetType() te donne le type de la variable, mais rien ne prouve que le nombre contenu dedans est bien un float, ça peut tout aussi bien être un entier. De même un float peut très bien être dans une variable de type double.

La demande porte sur le fait de savoir si "un nombre est un float" et pas de savoir si "une variable est un float", il y a une nuance.

dorras7 devrait nous éclairer sur le sujet.
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
26 août 2009 à 15:36
Salut, Float c'est le type, à mon avis, la question devrait être "comment savoir si un nombre a une partie fractionnaire, des chiffres après la virgule.."

La 1ère idéé qui me vient c'est ça :

float x = 0.0f;
bool hasFraction = ( x - ( float )( int )x ) > 0.0f;
0
Rejoignez-nous