0

整数を除算しようとしていますが、結果として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]計算:5
2011-01-09 16:45:53.415 XX [8296:207]間違った答え:0%

助けていただければ幸いです:-)

4

4 に答える 4

7

最初に0を取得し(値を完全に失います)、次にそれを乗算します。最初に乗算し、次に除算する必要があります。

于 2011-01-09T15:50:21.403 に答える
2

除算を小数にキャストします。intをintで割ると、0に切り上げられます。

percentCorrect =((decimal)playerResult /(decimal)askQuestions)* 100;
于 2011-01-09T15:54:24.730 に答える
2

floatデータ型を使用してみてください。intは切り捨てられます。

于 2011-01-09T15:49:54.970 に答える
1

結果を格納するためにintを使用しています。つまり、除算で0.8のような値が生成された場合、値は切り捨てられ、答えとして0が返されます。

于 2011-01-09T15:49:50.900 に答える