结果错误的除法

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 作为答案

【讨论】:

以上是关于结果错误的除法的主要内容,如果未能解决你的问题,请参考以下文章

bigdecimal类型除法问题

sql 查询出的结果进行除法运算,结果无法四舍五入。求助!

如何细化浮点除法的结果?

excel2007除法结果为啥只有整数,怎样才能保留两位小数?

获得数字除法的准确结果

求助:C语言大整数相除