繁体   English   中英

不需要的数字计算结果

[英]Unwanted number calculation result

好的,我正在编写一个程序,根据用户希望的数量为用户提供一组方程式。 运行后,用户回答所有问题,生成报告。 我的报告代码很简单:

public void report(){
    percent = (totalCorrect / numberOfQuestions) * 100;
    totalTime = (endTime - startTime) / 1000;
    System.out.println("Report:");
    System.out.println("Questions Answered: " + numberOfQuestions);
    System.out.println("Total Correct: " + totalCorrect);
    System.out.println("Total Incorrect: " + totalIncorrect);
    System.out.println("Percent: " + percent + "%");
    System.out.println("Time taken: " + totalTime + " seconds");
}

但结果是:

Report:
Questions Answered: 2
Total Correct: 1
Total Incorrect: 1
Percent: 0.0%
Time taken: 2 seconds

这是正确的,我故意回答一个正确和一个错误。 我的问题是百分比总是0.0%,除非我把它们弄好,在这种情况下它是100%。 我不明白我做错了什么。 它记录了正确答案的正确数量(基于“总校正:”输出)和问题数量。 显然,我的百分比方程是正确的。 任何帮助将非常感激!

如果你的程序中totalCorrectnumberOfQuestionsint ,那么你很可能已经执行了整数除法。 在Java中的整数除法中,结果也必须是int因此结果将被截断。

在执行除法之前将其中一个变量转换为double ,因此Java将首先执行浮点除法。

percent = ((double) totalCorrect / numberOfQuestions) * 100;

正如其他人所指出的那样,你可能正在进行整数除法。

您的变量totalCorrectnumberOfQuestions一个或两个必须是double,至少在计算时是这样。

尝试这个:

percent = ((double)totalCorrect / numberOfQuestions) * 100;

Maulzey提供了另一个不会从int转换为double的好选择。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM