間違った結果がある分裂
-
08-10-2019 - |
質問
整数を分割しようとしていますが、結果として0を取得しようとしています。私は自分が間違っていることを理解していません。この例ではINTのみを使用していますが、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] Calc:5
2011-01-09 16:45:53.415 XX [8296:207]間違った回答:0%
私はとても感謝しています:-)
解決
師団を10進数に投げかけます。 INTで除算されたINTは0に切り上げられます。
percentCorrect = ((decimal) playerResult / (decimal) askedQuestions) * 100;
他のヒント
最初に0を取得し(値を完全に失います)、それを掛けます。最初に乗算してから分割する必要があります。
フロートデータ型を使用してみてください。INTは切り捨てられます。
さて、INTを使用して結果を保存しています。つまり、分割が0.8のような値を生成する場合、値は切り捨てられ、答えとして0を取得します。
所属していません StackOverflow