我希望获得两个整数,一个除以另一个以获得小数或百分比。 如何获得这两个整数的百分比或小数? (我不确定它是不是......我可能会离开......) 例如:
int correct = 25;
int questionNum = 100;
float percent = correct/questionNum *100;
这就是我认为我能做到的,但是它不起作用......我想把十进制(如果有的话)变成100的百分比,例如在这种情况下它是%25。任何人的想法?
这是正确的代码(感谢Salvatore Previti!):
float correct = 25;
float questionNum = 100;
float percent = (correct * 100.0f) / questionNum;
(顺便说一下,我正在制作一个项目用于测验检查程序,这就是我需要百分比或小数的原因)
答案 0 :(得分:77)
如果你不添加.0f
,它将被视为一个整数,并且整数除法确实与浮点除法有很大不同:)
float percent = (n * 100.0f) / v;
如果你需要一个整数,你当然可以再次将float
或double
转换为整数。
int percent = (int)((n * 100.0f) / v);
如果您知道您的n值小于21474836(即(2 ^ 31/100)),则可以使用整数运算完成所有操作。
int percent = (n * 100) / v;
如果你得到NaN是因为你做了什么,你当然不能分为零......这没有意义。
答案 1 :(得分:14)
两个选项:
乘法后进行除法:
int n = 25;
int v = 100;
int percent = n * 100 / v;
在分割
之前将int
转换为float
int n = 25;
int v = 100;
float percent = n * 100f / v;
//Or:
// float percent = (float) n * 100 / v;
// float percent = n * 100 / (float) v;
答案 2 :(得分:3)
其中一个必须是浮动进入。确保这一点的一种可能方法是:
float percent = (float) n/v * 100;
否则,你正在做integer division, which truncates the numbers。此外,除非double
有充分理由,否则您应该使用float
。
您将遇到的下一个问题是,您的某些百分比可能看起来像24.9999999999999%而不是25%。这是由于浮点表示的精度损失。你也必须决定如何处理它。选项包括DecimalFormat来“修复”格式,或BigDecimal来表示确切的值。
答案 3 :(得分:0)
float percent = (n / (v * 1.0f)) *100
答案 4 :(得分:0)
将小数点设为百分比就可以了,
float percentage = (correct * 100.0f) / questionNum;