質問

整数を分割しようとしていますが、結果として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を取得します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top