Tester si un nombre est un float ou pas

Signaler
Messages postés
63
Date d'inscription
dimanche 15 mars 2009
Statut
Membre
Dernière intervention
23 décembre 2010
-
Lutinore
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
-
Salut,
j'ai besoin de connaitre si un nombre est un float ou pas

4 réponses

Messages postés
276
Date d'inscription
lundi 8 septembre 2008
Statut
Membre
Dernière intervention
15 avril 2013
2
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
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
16
if (i.GetType() == typeof(float))
{
//C'est un float
}
Messages postés
276
Date d'inscription
lundi 8 septembre 2008
Statut
Membre
Dernière intervention
15 avril 2013
2
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.
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
29
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;