деление с неверным результатом - PullRequest
0 голосов
/ 09 января 2011

Я пытаюсь разделить целые числа, но в результате получаю 0. Я просто не понимаю, что я делаю не так. В этом примере я использую только целые числа, но получаю тот же результат, используя float или double.

Код, который я использую:

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));

Результат, который я получаю:

2011-01-09 16: 45: 53.411 XX [8296: 207] askQuestions: 5
2011-01-09 16: 45: 53.412 XX [8296: 207] playerResult: 2
2011-01-09 16: 45: 53.412 XX [8296: 207] неправильный Ответ: 3
2011-01-09 16: 45: 53.413 XX [8296: 207] процентовНеправильно: 0%
2011-01-09 16: 45: 53,414 XX [8296: 207] процентовНеверно: 0%
2011-01-09 16: 45: 53.414 XX [8296: 207] рассчитано: 5
2011-01-09 16: 45: 53.415 XX [8296: 207] неправильные ответы: 0%

Я был бы очень признателен за помощь: -)

Ответы [ 4 ]

7 голосов
/ 09 января 2011

Сначала вы получаете 0 (полностью теряя значение), а затем умножаете его.Вам нужно сначала умножить, а затем поделить.

2 голосов
/ 09 января 2011

Приведите деление к десятичному.Int, деленное на int, будет округлено до 0.

percentCorrect = ((decimal) playerResult / (decimal) askedQuestions) * 100;
2 голосов
/ 09 января 2011

Попробуйте использовать тип данных с плавающей точкой, int усекаются.

1 голос
/ 09 января 2011

хорошо, вы используете int для хранения результата, что означает, что если при делении получаются значения, например, 0,8, значение будет усечено, и вы получите 0 в качестве ответа

...