我想得到两个整数,一个除以另一个得到一个小数或百分数。如何获得这两个整数的百分比或小数?)我不确定它是否正确。我可能已经走远了……)例如:
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;(顺便说一句,我正在做一个项目,使用它作为测验检查程序,这就是为什么我需要百分比或小数)
发布于 2011-10-22 05:21:13
如果不添加.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是因为你做了,你当然不能除以零…这没有意义。
发布于 2011-10-22 05:23:51
有两个选项:
在乘法后进行除法:
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;发布于 2011-10-22 05:21:37
其中一个必须是进入的花车。确保这一点的一种可能方法是:
float percent = (float) n/v * 100;否则,你就是在做integer division, which truncates the numbers。此外,除非有充分的理由使用float,否则您应该使用double。
你将遇到的下一个问题是,你的一些百分比可能看起来像24.9999999999999%而不是25%。这是由于浮点表示中的精度损失造成的。你也必须决定如何处理这个问题。选项包括用于“修复”格式的DecimalFormat或用于表示精确值的BigDecimal。
https://stackoverflow.com/questions/7855387
复制相似问题