用于计算百分比的Java算术

时间:2012-09-28 09:35:41

标签: java math

我的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个。

8 个答案:

答案 0 :(得分:8)

首先,你不应该在所有地方使用Float - 你想要float;没有必要在这里拳击。

其次,您根本没有使用xy

第三,我会说你表达这个等式的方式至少令人困惑。 可能只是改为xy会很好,但我不会 - 我会改变你自己表达的方式。

第四,您通过在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

答案 1 :(得分:6)

试试这个。

float num = (correct * 100.0) / questions;

答案 2 :(得分:3)

Float num = (float) (100 / y * x);

问题在于您没有使用之前构建的浮动。

或者我建议:

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

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

答案 3 :(得分:2)

试试这个:

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

num = (correct * 100.0) / questions;

答案 4 :(得分:0)

使用以下内容:

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

答案 5 :(得分:0)

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

以下列方式执行:

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

由于questionscorrect的类型为int,因此小数点后的值不会被限制。

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

这就是你得到的。

答案 6 :(得分:0)

没有不合理的问题。

您正在计算correctquestions的哪一部分。说这个的数学方法是:

  correct/questions

现在,由于它们可以转到小数,因此您需要使用代码中提到的Float。所以:

 (float)correct/(float)quesions  

这就是你cast浮动的方式。要以百分比(100)得到答案,必须乘以100,即

  100 * (float)correct/(float)quesions 

你去吧:)

以正确的方式获取编码,请听取其他答案。

答案 7 :(得分: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);