导致百分比错误的数学问题

Math issue causing errors with percentages

我正在创建一个应用程序来计算 class 分数,然后根据分数输出字母等级。

总而言之,我不是最擅长数学的,我无法确定我的数学错误在代码中的位置,控制台因此拆分出过多的百分比值。

这是控制台输出的内容:

My quiz percentage is 83.33333
my lab percentage is 72.916664
My Mid-Term percentage is 196.72131
my End-Term Percentage is 200.72131
My final percentage grade is 115.35263
Calculation error: possible percentage values between 1%-100%. Check your math and try again.

(最后一行只是一个if语句,表明存在计算错误。正确完成后,它应该输出其他if语句处理的字母等级。)

下面是我的代码:

//Quiz scores
float q1=20, q2=19, q3=14, q4=17, actualQuizPoints=70, actualPoints=80, totalMidTermPoints=120, actualMidTermPoints=61; 

//Lab scores
float l1=20, l2=19, l3=14, l4=17;


void setup() {
  noLoop();
  size(100,100);
  }

void draw() {  
  float totalQuizPoints=Addition(q1, q2, q3, q4);
  float quizPercentage = Percentage(totalQuizPoints, actualQuizPoints);
  float totalLabPoints =Addition(l1, l2, l3, l4);
  float labPercentage=Percentage(totalLabPoints, actualPoints);
  float midTermPercentage=Percentage(totalMidTermPoints, actualMidTermPoints);
  float endTermPercentage=midTermPercentage+4;
  float finalPercentage=Addition(quizPercentage, labPercentage, midTermPercentage, endTermPercentage)/4;
  println("My quiz percentage is " + quizPercentage);
  println("my lab percentage is " + labPercentage);
  println("My Mid-Term percentage is " + midTermPercentage);
  println("my End-Term Percentage is " + endTermPercentage);
  println("My final percentage grade is " + finalPercentage);

  if (finalPercentage  <60) {
  println ("My final letter grade is F.");
      }


  if (finalPercentage  >=60 & finalPercentage <70) {
  println ("My final letter grade is D.");
      }

  if (finalPercentage  >=70 & finalPercentage <80) {
  println ("My final letter grade is C.");
      }

  if (finalPercentage  >=80 & finalPercentage <90) {
  println ("My final letter grade is B.");
      }

  if (finalPercentage  >=90 & finalPercentage <=100) {
  println ("My final letter grade is A.");
      }


  if (finalPercentage  >100) {
  println ("Calculation error: possible percentage values between 1%-100%. Check your math and try again.");
      }

   }

float Addition(Float n1, float n2, float n3, float n4) {
  float total=(n1+n2+n3+n4)/120*100;
  return total;
   }

float Percentage(float totalpoints, float actualpoints) {
  float percentageIs=(totalpoints/actualpoints)*100;
  return percentageIs;
   }

您使用术语 totalactual 的方式不一致。

对于测验分数和实验分数,您使用 total 表示所有获得分数的总和,使用 actual 表示本可以获得的分数。

对于期中、期末和期末的分数,你可以调换它们。

您需要修改代码,以便与传递给 percentage() 函数的参数保持一致。

不要太在意别人的看法,我只是想尝试回答一下。没有理解你所有的代码。但是我已经在底部发布了我的 "findings" 的整个代码。

我的评论是可选的

至少底部的代码给出了 0-100% 的实际百分比,如果你编译:)

结果:

My quiz percentage is 87.5
my lab percentage is 87.5
My Mid-Term percentage is 50.833332
my End-Term Percentage is 54.833332
My final percentage grade is 70.166664
My final letter grade is C.

不太确定这段代码是什么:

void setup() {
    noLoop();
    size(100,100);
}

我主要是把你的加法改成了实际加4个数:

float Addition(Float n1, float n2, float n3, float n4) {
  float total=(n1+n2+n3+n4);
  return total;
   }

而且我想我改变了一些参数 f。实例:

float quizPercentage = Percentage(totalQuizPoints, actualQuizPoints);

实际积分。否则它会计算 70 / 70 *100。即 100

我还互相调换了参数:

  float midTermPercentage=Percentage(totalMidTermPoints, actualMidTermPoints);

我不太确定这是什么意思,但我把它留下了:

 float endTermPercentage=midTermPercentage+4;

完整代码:

class Grading{
//Quiz scores
float q1=20, q2=19, q3=14, q4=17, actualQuizPoints=70, actualPoints=80, totalMidTermPoints=120, actualMidTermPoints=61; 

//Lab scores
float l1=20, l2=19, l3=14, l4=17;

    public static void main(String[] args){
        Grading g=new Grading();
        g.draw();
    }




void draw() {  
  float totalQuizPoints=Addition(q1, q2, q3, q4);
  float quizPercentage = Percentage(totalQuizPoints, actualPoints);
  float totalLabPoints =Addition(l1, l2, l3, l4);
  float labPercentage=Percentage(totalLabPoints, actualPoints);
  float midTermPercentage=Percentage(actualMidTermPoints, totalMidTermPoints);
  float endTermPercentage=midTermPercentage+4;
  float finalPercentage=Addition(quizPercentage, labPercentage, midTermPercentage, endTermPercentage)/4;
  System.out.println("My quiz percentage is " + quizPercentage);
  System.out.println("my lab percentage is " + labPercentage);
  System.out.println("My Mid-Term percentage is " + midTermPercentage);
  System.out.println("my End-Term Percentage is " + endTermPercentage);
  System.out.println("My final percentage grade is " + finalPercentage);

  if (finalPercentage  <60) {
  System.out.println ("My final letter grade is F.");
      }


  if (finalPercentage  >=60 & finalPercentage <70) {
  System.out.println ("My final letter grade is D.");
      }

  if (finalPercentage  >=70 & finalPercentage <80) {
  System.out.println ("My final letter grade is C.");
      }

  if (finalPercentage  >=80 & finalPercentage <90) {
  System.out.println ("My final letter grade is B.");
      }

  if (finalPercentage  >=90 & finalPercentage <=100) {
  System.out.println ("My final letter grade is A.");
      }


  if (finalPercentage  >100) {
  System.out.println ("Calculation error: possible percentage values between 1%-100%. Check your math and try again.");
      }

   }

float Addition(Float n1, float n2, float n3, float n4) {
  float total=(n1+n2+n3+n4);
  return total;
   }

float Percentage(float totalpoints, float actualpoints) {

  float percentageIs=(totalpoints/actualpoints)*100;
  return percentageIs;
   }
}