两个int的百分比?

Bar*_*uch 50 java int decimal

我想得到两个整数,一个除以另一个得到小数或百分比.如何获得这两个整数的百分比或小数?(我不确定它是否正确......我可能会离开...)例如:

int correct = 25;
int questionNum = 100;
float percent = correct/questionNum *100;
Run Code Online (Sandbox Code Playgroud)

这就是我认为我能做到的,但是它不起作用......我想把十进制(如果有的话)变成100的百分比,例如在这种情况下它是%25.任何人的想法?

这是正确的代码(感谢Salvatore Previti!):

float correct = 25;
float questionNum = 100;
float percent = (correct * 100.0f) / questionNum;
Run Code Online (Sandbox Code Playgroud)

(顺便说一下,我正在用一个项目来进行测验检查程序,这就是我需要百分比或小数的原因)

Sal*_*iti 80

如果你不添加.0f它将被视为它是一个整数,并且整数除法与浮点除法确实很多:)

float percent = (n * 100.0f) / v;
Run Code Online (Sandbox Code Playgroud)

如果您需要出这个整数,你当然可以施放floatdouble整数一次.

int percent = (int)((n * 100.0f) / v);
Run Code Online (Sandbox Code Playgroud)

如果您知道您的n值小于21474836(即(2 ^ 31/100)),则可以使用整数运算完成所有操作.

int percent = (n * 100) / v;
Run Code Online (Sandbox Code Playgroud)

如果你得到NaN是因为你做了什么,你当然不能分为零......这没有意义.

  • 100F就足够了.不需要.0. (5认同)

Eri*_*ric 16

两种选择:

在乘法后进行除法:

int n = 25;
int v = 100;
int percent = n * 100 / v;
Run Code Online (Sandbox Code Playgroud)

在分割之前将inta 转换为afloat

int n = 25;
int v = 100;
float percent = n * 100f / v;
//Or:
//  float percent = (float) n * 100 / v;
//  float percent = n * 100 / (float) v;
Run Code Online (Sandbox Code Playgroud)