2009-08-26 7 views
0

J'ai un CGFloat qui ne contient que des "entiers", en ce sens qu'il ne veut réellement représenter que des entiers, mais en raison d'une précision flottante, il peut arriver qu'il ait en interne un 23.0000000000000000000142 ou quelque chose comme ça. J'essaie d'alimenter un NSDecimalNumber avec une entrée propre, donc je dois m'assurer que c'est vraiment un entier nu sans saleté. Eh bien, je pense que c'est un bon moyen, mais peut-être que je me trompe:Un moyen sûr et valide pour convertir un "entier flottant" en un entier naturel?

NSInteger * intVal = floatVal;

Ce serait juste se débarrasser de ces parties fragmentaires à la fin du conte, non? Ou y a-t-il un moyen plus sûr de le convertir en un véritable nombre entier?

Répondre

0

Si vous voulez juste prendre la partie entière d'un flotteur alors je crois que vous pouvez juste faire ce qui suit:

CGFloat myfloat = 23.0000000000142f; 
int myInt = (int) myfloat; 
+0

qui fait sens. Est-ce que cela fonctionnerait aussi avec NSInteger? Est-ce que cela ferait une différence que d'assigner le float à un NSInteger sans le lancer comme ça? Je ne suis pas sûr de ce qui se passe sous le capot mais je peux imaginer qu'il fait quelque chose comme ça? –

+0

Oui, cela devrait fonctionner avec NSInteger. Si la mémoire me sert correctement NSInteger est défini comme un int ou un long, dans les deux cas cela devrait fonctionner. –

Questions connexes