NSUInteger , resultat en float invalide (Problème de type)
iLandes
Membre
Petite question simple (mais pas pour moi ^^):
Pourquoi le code ci-dessous ne renvois dans r qu'une valeur entière (0 ou 1). Y'à un truc que je ne comprends pas dans la gestion des types.
D'avance merci de votre aide
s
e
b
NSUInteger items = [[query items]count];
NSUInteger current = [player indexOfNowPlayingItem];;
float r = current / items;
NSLog(@ i %lu of %lu = r %f, (unsigned long)current, (unsigned long)items, r);
return r ;
Mots clés:
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Essaie
Super Merci beaucoup^^
J'ai régulièrement du mal avec les différents types que l'on rencontre en développant. Si quelqu'un à un explication globale sur les types et leur mélange je suis preneur !!
Cordialement
s
e
b
Tu as demandé : fais la division entre deux int puis transforme le résultat en float.
Or la division entre deux int est encore un int.
Donc, il fallait demander : transforme cet int en un float. Divise-le par cet int (le résultat est un float). Et voilà !
10/4 va donner 2, et pas 2.25
Par contre 10.0/4.0 va retourner 2.25 car tu divises deux floats
Et 10/4.0 ou 10.0/4 aussi car une division entre un float et un Int ou vue versa donne un float. Par contre entre 2 Int ça donne un Int.
D'où le type casting que propose colas2 dans sa réponse pour convertir au moins une des 2 valeurs en float avant d'y appliquer la division.