我的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个。
答案 0 :(得分:8)
首先,你不应该在所有地方使用Float
- 你想要float
;没有必要在这里拳击。
其次,您根本没有使用x
和y
。
第三,我会说你表达这个等式的方式至少令人困惑。 可能只是改为x
和y
会很好,但我不会 - 我会改变你自己表达的方式。
第四,您通过在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);
由于questions
和correct
的类型为int
,因此小数点后的值不会被限制。
现在,100 /questions = 100 / 38 = 2
和num = (Float)(2 * 28)
= 76。
这就是你得到的。
答案 6 :(得分:0)
没有不合理的问题。
您正在计算correct
中questions
的哪一部分。说这个的数学方法是:
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);