Java百分比计算未处理,我可以';我不明白为什么

Java百分比计算未处理,我可以';我不明白为什么,java,android,arrays,math,percentage,Java,Android,Arrays,Math,Percentage,下面是一段代码: System.out.println("Calc: " + totalMs[0] + " divided by " + totalTestMs + " times 100"); System.out.println("Calc 2: " + totalBits[0] + " divided by " + totalCount[0] + " divided by 1000000"); DecimalFormat df = new DecimalFormat("0.00");

下面是一段代码:

System.out.println("Calc: " + totalMs[0] + " divided by " + totalTestMs + " times 100");
System.out.println("Calc 2: " + totalBits[0] + " divided by " + totalCount[0] + " divided by 1000000");

DecimalFormat df = new DecimalFormat("0.00");

String b1 = "0", b2 = "0", b3 = "0", b4 = "0", b5 = "0", b6 = "0", b7 = "0", b8 = "0", b9 = "0", b10 = "0";
String b1Pct = "0";

if (totalCount[0] > 0) { 
    b1Pct = df.format((totalMs[0]/totalTestMs)*100);
    b1 = df.format((totalBits[0]/totalCount[0])/1000000); 
}
计算失败,计算2通过。上述系统打印显示的输出为:

如你所见,这些数字似乎通过正确。但是,当我系统输出b1Pct结果时,它表示为“0.0”。在这种情况下,它应该是22.73


我相信这很简单,但我想不出来。更令人困惑的是,第二个是正确的

看起来您正在对Calc进行整数除法。当您对两个整数进行除法时,将得到一个整数,剩余部分将被丢弃,即:

System.out.println("Integer divide: " + 40/100); //Result is 0
您需要将其中一个转换为浮点数,只需添加一个小数,即:

System.out.println("Decimal divide: " +  40/100.); //Result is .40
System.out.println("Cast divide: " + 40/((float)100)); //Result is .40

干杯

因此,即使存在*100使其达到22.72,它仍将被报告为0?事实上,因为第一次计算的结果是0,所以它最终是0*100除以整数得到整数。分割浮动会产生浮动。