首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个整型的百分比?

两个整型的百分比?
EN

Stack Overflow用户
提问于 2011-10-22 05:19:44
回答 5查看 149.6K关注 0票数 54

我想得到两个整数,一个除以另一个得到一个小数或百分数。如何获得这两个整数的百分比或小数?)我不确定它是否正确。我可能已经走远了……)例如:

代码语言:javascript
复制
int correct = 25;
int questionNum = 100;
float percent = correct/questionNum *100;

我以为我能做到,但没成功...我希望将小数(如果有)转换为100的百分比,例如,在本例中是%25。有没有人有主意?

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

代码语言:javascript
复制
float correct = 25;
float questionNum = 100;
float percent = (correct * 100.0f) / questionNum;

(顺便说一句,我正在做一个项目,使用它作为测验检查程序,这就是为什么我需要百分比或小数)

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-10-22 05:21:13

如果不添加.0f,它将被视为整数,而整数除法实际上与浮点除法有很大不同:)

代码语言:javascript
复制
float percent = (n * 100.0f) / v;

如果您需要一个整数,当然可以将floatdouble再次转换为整数。

代码语言:javascript
复制
int percent = (int)((n * 100.0f) / v);

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

代码语言:javascript
复制
int percent = (n * 100) / v;

如果你得到NaN是因为你做了,你当然不能除以零…这没有意义。

票数 89
EN

Stack Overflow用户

发布于 2011-10-22 05:23:51

有两个选项:

在乘法后进行除法:

代码语言:javascript
复制
int n = 25;
int v = 100;
int percent = n * 100 / v;

除法前将int转换为float

代码语言:javascript
复制
int n = 25;
int v = 100;
float percent = n * 100f / v;
//Or:
//  float percent = (float) n * 100 / v;
//  float percent = n * 100 / (float) v;
票数 19
EN

Stack Overflow用户

发布于 2011-10-22 05:21:37

其中一个必须是进入的花车。确保这一点的一种可能方法是:

代码语言:javascript
复制
float percent = (float) n/v * 100;

否则,你就是在做integer division, which truncates the numbers。此外,除非有充分的理由使用float,否则您应该使用double

你将遇到的下一个问题是,你的一些百分比可能看起来像24.9999999999999%而不是25%。这是由于浮点表示中的精度损失造成的。你也必须决定如何处理这个问题。选项包括用于“修复”格式的DecimalFormat或用于表示精确值的BigDecimal

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7855387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档