2

我的 java 应用程序有一个小问题。

我必须计算他们完成时的分数,我使用这种方法:

public Float ScoreProcent(int questions, int correct){
    Float x = new Float(questions);
    Float y = new Float(correct);

    Float num = (float) (100 / questions * correct);
    return num;
}

但是,当我有 38 个问题并且 38 个是正确的时,它会显示 76 个。

4

8 回答 8

9

首先,你不应该到处使用Float——你想要的float;没有必要在这里打拳击。

其次,你根本没有使用xy

第三,我想说您表达方程式的方式至少令人困惑。有可能只是改成xandy就可以了,但我不会——我会改变你表达自己的整个方式。

第四,您在 PascalCase 中编写方法名称违反了 Java 命名约定。你也有拼写错误。

解决所有这些问题,您将以以下方式结束:

public static float getPercentageCorrect(int questions, int correct) {
    float proportionCorrect = ((float) correct) / ((float) questions);
    return proportionCorrect * 100;
}

我实际上会概括这一点 - 它并不特定于“正确答案”,因此可用于任何总分中的分数:

/**
 * Returns a proportion (n out of a total) as a percentage, in a float.
 */
public static float getPercentage(int n, int total) {
    float proportion = ((float) n) / ((float) total);
    return proportion * 100;
}

如评论中所述,这可以写成:

float proportion = (float) n / total;

...但是你需要知道优先规则来验证它。我已经明确地包含了这两个强制转换,以明确我想在除法float 之前将每个操作数转换为。

于 2012-09-28T09:38:49.757 回答
6

尝试这个。

float num = (correct * 100.0) / questions;
于 2012-09-28T09:37:39.767 回答
3
Float num = (float) (100 / y * x);

问题是您没有使用之前刚刚构建的浮动。

或者,我建议这样做:

public float getScorePercent(int questions, int correct){
    return 100f * correct / questions;
}

通常建议避免Float和使用float,除非您确实需要对象(很少)。

于 2012-09-28T09:36:46.753 回答
2

尝试这个:

num = (float) (100 * (float) correct / (float) questions);

或者

num = (correct * 100.0) / questions;
于 2012-09-28T09:37:16.837 回答
1

使用以下内容:

Float num = (float) ((100  * correct) / questions);
于 2012-09-28T09:39:44.880 回答
0
Float num = (float) (100 / questions * correct); 

它通过以下方式执行:

Float num = (float) ((100 / questions) * correct); 

由于questionsand的类型correctint,因此不考虑小数点后的值。

现在,100 /questions = 100 / 38 = 2并且,num = (Float)(2 * 28)= 76。

这就是你得到的。

于 2012-09-28T09:41:24.197 回答
0

没有不合理的问题。

您正在correct计算questions. 说这个的数学方法是:

  correct/questions

现在,由于它们可以进入小数,您需要使用Float您在代码中提到的那个。所以:

 (float)correct/(float)quesions  

这就是你如何cast漂浮的东西。要获得百分比(100)的答案,它必须乘以 100,即

  100 * (float)correct/(float)quesions 

你去吧:)

要获得编码的正确方法,请听其他答案。

于 2012-09-28T09:45:58.080 回答
0

我将尝试以其他方式解释:

float hoursWorked = (float) 32.5;
final double HOURLY_RATE = 9.35;
double wages = HOURLY_RATE * hoursWorked;
final double TAX_RATE = 22; // percentage
double taxDue = TAX_RATE * wages / 100;
// to calculate using percentage need to divide by 100
System.out.print(taxDue);
于 2015-09-27T11:14:29.300 回答