当前位置: 首页 > 知识库问答 >
问题:

百分比计算一直返回0[重复]

孟泽宇
2023-03-14

我试图实现的是一个测试的评分系统,但是如果有错误的答案,变量百分比等级总是返回0。

参考代码:

import java.util.ArrayList;

public class Result
{
    private Test test;
    private ArrayList<String> correctAnswers;

    public Result()
    {
        this.correctAnswers = new ArrayList<>();
    }
    
   public void addTest(Test test) {
       this.test = test;
   }

   public Test getTest() {
       if(this.test != null) {
           return this.test;
        }     
        return null;   
   }
   
   public void addcorrectAnswers(String correctAnswers) {
       this.correctAnswers.add(correctAnswers);
   }
   
   public ArrayList<String> getCorrectAnswers() {
       return this.correctAnswers;
   }
   
   public String getGrade() {
           
        int counter = 0;
        
        for(String gradingAnswers : this.correctAnswers) {
            for(String answersTest : this.test.getAnswers()) {
                if(answersTest == gradingAnswers) {
                    counter++;
                }
            }
        }
        
        if(this.test.getAnswers().size() > 0){
            double percentGrade = (counter / this.correctAnswers.size()) * 100; //ISSUE IS HERE 
            if(percentGrade > 55) {
                return "Your score is " + percentGrade + "% ." + " You PASSED!!";
            }else if(percentGrade <= 55){
                return "Your score is " + percentGrade + "% ." + " You FAILED!!"; 
            }else {
                return "Could not return score !";
            }
       }
        return "Could not return answers or calculate";
    }
}   


共有2个答案

查宜修
2023-03-14

柜台和这个。正确答案。size()都是整数,所以“/”是整数运算符。尝试

   double percentGrade = ((float)counter / this.correctAnswers.size()) * 100;

强制进行浮动分割。

如果需要控制精度,我建议使用BigDecimal类及其子类。divide()方法。

        BigDecimal.valueOf(counter ).divide(BigDecimal.valueOf(size),4, RoundingMode.CEILING).multiply(BigDecimal.valueOf(100));
万俟丁雷
2023-03-14

转换为浮点数将确保您使用浮点数除法而不是整数除法。对于涉及更高精度的除法,整数除法通常是错误的选择。

double percentGrade=((浮动)计数器/this。正确答案。大小())*100//问题在这里,如果(百分比分数)

 类似资料:
  • 问题内容: 我有4个项目MySQL数据库:(数值),和。 在我的报告中,我需要通过“调查”中的数字来计算已参加调查的“雇员”的百分比。 这是我现在的声明: 表格如下: 我想按参加调查的人数来计算谁所占的百分比。即,如以上数据所示,分别为0%和95%。 问题答案: 尝试这个 在这里演示

  • 我有一个包含4个项的MySQL数据库:(数值)、、和。 在我的中,我需要根据“surveys”中的数字来计算接受调查的“employees”的百分比。 这就是我现在的说法: 下面是表格的原样: 我想根据中的数字计算参加调查的的百分比。即,如上面的数据所示,将为0%,将为95%。

  • 我试图计算数字的百分比(取自一个文本字段),并将计算值设置为另一个表单字段。为此,我尝试了下面的代码,但我发现js正在检测的键事件/小数位数不匹配。 例如,如果我在第一个输入字段中提供100(以计算1.75的百分比),根据我的js代码,我预计是1.75,但在第二个文本字段中是0.175。我知道这是一个非常简单的计算,但我无法解决这个问题。

  • 我连接到一个流,它提供给我+100个加密货币的实时价格(我大约每2秒获得一个新价格)。我想知道,如何计算每个密码价格之间的百分比差异在5分钟的周期,然后更新它每新的一分钟?我正在使用带有本机Websocket连接(不是socket.io)的React。 我想我必须每分钟“节省”(以某种方式)每个密码价格,但我如何才能做到这一点? 出于测试目的,为了查看是否可以每10秒更新一个加密价格,我尝试在套接

  • 这5个国家在所有奥运会上获得的奖牌中,每个国家获得的奖牌比例是多少?

  • 我正在将每30秒的成功计数指标和失败计数指标记录到石墨中。在Grafana中,我使用每秒钟和hitCount(1分钟)来聚合每分钟的计数(成功和失败)。现在我需要计算每分钟的成功百分比?关于如何继续的任何建议? 此外,我还在下面提到的第四个指标*上使用groupbyNode。