2011-01-09 16 views
0

Ich versuche, ganze Zahlen zu teilen, aber 0 als Ergebnis erhalten. Ich verstehe einfach nicht, was ich falsch mache. Ich benutze nur int in diesem Beispiel, bekomme aber das gleiche Testergebnis mit float oder double.Division mit falschem Ergebnis

Der Code i verwenden:

int wrongAnswers = askedQuestions - playerResult; 
int percentCorrect = (playerResult/askedQuestions) * 100; 
int percentWrong = (wrongAnswers/askedQuestions) * 100; 


NSLog(@"askedQuestions: %i", askedQuestions); 
NSLog(@"playerResult: %i", playerResult); 
NSLog(@"wrongAnswers: %i", wrongAnswers); 
NSLog(@"percentCorrect: %i", percentCorrect); 
NSLog(@"percentWrong: %i", percentWrong); 
NSLog(@"calc: %i", (wrongAnswers + playerResult)); 
NSLog(@"wrong answers %: %i %%", ((wrongAnswers/askedQuestions) * 100)); 

Das Ergebnis i erhalten ist:

2011-01-09 16: 45: 53,411 XX [8296: 207] askedQuestions: 5
2011-01-09 16: 45: 53.412 XX [8296: 207] playerResult: 2
2011-01-09 16: 45: 53.412 XX [8296: 207] wrongAnswers: 3
2011-01-09 16:45 : 53,413 XX [8296: 207] ProzentKorrektur: 0%
2011-01-09 16: 45: 53.414 XX [8296: 207] Prozent: 0%
2011-01-09 16: 45: 53.414 XX [8296: 207] berrechnet: 5
2011-01-09 16 45: 53,415 XX [8296: 207] falsche Antworten: 0%

ich würde sehr helfen schätzen :-)

Antwort

2

Die Division in Dezimalform umwandeln. Int dividiert durch int wird auf 0 aufgerundet.

 
percentCorrect = ((decimal) playerResult/(decimal) askedQuestions) * 100; 
+4

Oder mach es einfach anders herum (multipliziere, teile dann) und speichere die Casts :) – schnaader

1

gut Sie int verwenden um das Ergebnis zu speichern, die, wenn die Teilung Erträge Werte bedeutet wie 0.8 ist der Wert abgeschnitten und Sie erhalten 0 als Antwort

2

Versuchen Sie mit Float-Datentyp, Int sind abgeschnitten.

7

Sie erhalten zuerst 0 (den Wert vollständig zu verlieren) dann multiplizieren Sie es. Sie müssen zuerst multiplizieren, dann teilen.

Verwandte Themen