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]问问题: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

尝试使用 float 数据类型,int are truncated 。

于 2011-01-09T15:49:54.970 回答
2

将除法转换为小数。Int 除以 int 将四舍五入为 0。

percentCorrect = ((decimal) playerResult / (decimal) askQuestions) * 100;
于 2011-01-09T15:54:24.730 回答
1

好吧,您正在使用 int 来存储结果,这意味着如果除法产生像 0.8 这样的值,则该值将被截断,您将得到 0 作为答案

于 2011-01-09T15:49:50.900 回答