如果使用普通BODMAS操作执行,则返回0
。
我有这样的事情:
int mbUsed=1;
int mbTotal=25;
int percent=(mbUsed/mbTotal)*100;
答案 0 :(得分:1)
1/25
将返回0,因为int division不能返回分数。
你可以为浮点除法加倍:
int percent=(int) ((double)mbUsed/mbTotal)*100;
或者如果您想要更准确的结果:
double percent = ((double)mbUsed/mbTotal)*100;
如果你想继续使用int division,你可以改变运算符的顺序:
int percent = (100*mbUsed)/mbTotal;
答案 1 :(得分:1)
int
中的Java
数据类型包含整个值。您应该将值存储在double
或float
数据类型中,因为它们可以包含小数点。
在这里你可以看到一个例子:
public static void main(String[] args) {
int iVal1 = 1;
int iVal2 = 25;
int iVal3 = iVal1 / iVal2;
System.out.println("Integer storage, int variables: " + iVal3);
double dVal1 = iVal1 / iVal2;
System.out.println("Double storage, int variables: " + dVal1);
double dVal2 = (double) iVal1 / (double) iVal2;
System.out.println("Double storage, double variables: " + dVal2);
}
哪个输出:
Integer storage, int variables: 0
Double storage, int variables: 0.0
Double storage, double variables: 0.04
请注意您分割的值也必须至少具有double
精度。在我的示例中,我只需将其转换为double
(因为它们是整数,但它没有区别),但您也可以将它们存储在double
数据类型中。
答案 2 :(得分:0)
你也可以使用BigDecimal,所以对于其他比例你可以操纵比例: http://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html 特别推荐用于货币。
BigDecimal dividend= BigDecimal.ONE;
BigDecimal divisor = new BigDecimal(25);
BigDecimal result = dividend.divide(divisor );
答案 3 :(得分:0)
您也可以考虑仅为您的值mbUsed
和mbTotal
使用双打。
示例:
double mbUsed = 1;
double mbTotal = 25;
double percent = (mbUsed * 100)/mbTotal;
如果mbUsed
和mbTotal
的数字发生变化,您甚至可以添加小数格式。
示例:
DecimalFormat df = new DecimalFormat("#.00");
然后,您可以在df.format(percent)
语句中使用System.out.println
来显示舍入到两个小数点的百分比。
以下是一些可以编译的代码示例:
double mbUsed = 1;
double mbTotal = 25;
double percent = (mbUsed * 100)/mbTotal;
DecimalFormat df = new DecimalFormat("#.00");
System.out.println("The number used: " + df.format(mbUsed));
System.out.println("The total number: " + df.format(mbTotal));
System.out.println("The percentage used is: " + df.format(percent) + "%.");
输出:
The number used: 1.00
The total number: 25.00
The percentage used is: 4.00%
我希望这对你有用!