结果错误的除法
Posted
技术标签:
【中文标题】结果错误的除法【英文标题】:division with wrong result 【发布时间】:2011-01-09 15:47:33 【问题描述】:我正在尝试除以整数,但结果为 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 %
非常感谢帮助 :-)
【问题讨论】:
【参考方案1】:你首先得到 0(完全失去价值)然后乘以它。你需要先乘,然后除。
【讨论】:
【参考方案2】:将除法转换为十进制。 int 除以 int 将四舍五入为 0。
percentCorrect = ((decimal) playerResult / (decimal) askQuestions) * 100;【讨论】:
或者只是反过来做(乘,然后除)并保存演员表:)【参考方案3】:尝试使用float数据类型,int被截断。
【讨论】:
【参考方案4】:您使用 int 来存储结果,这意味着如果除法产生 0.8 之类的值,则该值将被截断,您将得到 0 作为答案
【讨论】:
以上是关于结果错误的除法的主要内容,如果未能解决你的问题,请参考以下文章