0 votes

float est mélangé lors du passage entre les méthodes (problème de typecasting ?)

J'ai du mal à faire passer une valeur flottante d'un objet à un autre. La valeur semble correcte dans la première méthode, mais dans la seconde, elle est énorme. Je suppose qu'il s'agit d'un problème de typage, car c'est la chose que je comprends le moins bien. Toute aide est la bienvenue !

Dans mon contrôleur de jeu, je fais ça :

float accuracy = (float)hitCount/(float)(hitCount+missCount);
NSLog(@"GameController - hits: %i misses: %i enemies: %i accuracy: %f", hitCount, missCount, escapedCount, accuracy);
[delegate postGameWithScore:roundScore andAccuracy:accuracy];

qui invoque cette méthode dans le délégué du contrôleur de jeu :

-(void)postGameWithScore:(NSInteger)score andAccuracy:(float)accuracy {
    cumulativeScore += score;
    NSLog(@"GameMaster - score: %i accuracy %f",cumulativeScore, accuracy);
    /* non relevant code clipped */
}

Salida:

GameController - hits: 14 misses: 54 enemies: 35 accuracy: 0.205882
GameMaster - score: 3800 accuracy 36893488147419103232.000000

Je n'arrive pas à comprendre pourquoi accuracy n'est pas correct dans le second NSLog.

1voto

Kenny Winker Points 6171

! ! l'a résolu.

L'ajout de ceci à l'en-tête de mon délégué a réglé le problème :

-(void)postGameWithScore:(NSInteger)score andAccuracy:(float)accuracy;

Je ne sais pas pourquoi cela a réglé le problème, mais cela m'apprendra à traiter les avertissements du compilateur comme des avertissements plutôt que des erreurs.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X