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

标签 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");

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); 
}

Calc 失败,Calc 2 通过。上述系统打印显示的输出是:

enter image description here

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

我确定这很简单,但我无法弄明白。更令人困惑的是第二个是正确的!

最佳答案

看起来您正在为 Calc 做整数除法。当你将两个整数相除时,你得到一个整数,余数被丢弃,即:

System.out.println("Integer divide: " + 40/100); //Result is 0

您需要将其中一个转换为 float ,只需添加一个小数,即:

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

干杯!

关于Java 百分比计算未处理,我不明白为什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26028081/

相关文章:

java - 在 AppEngine 上使用谷歌云端点

java - 如何在android中垂直添加一个又一个动态按钮?

android - 如何在android中使用不同的文本大小集?

python - 如何用另一个数组中的值填充两个 numpy 数组

ASP Repeater 生成的 Javascript 数组未更新

java - 检查 Java 中的 Kerberos KeyTab 文件是否有效

java - 从android中的assets文件中读取

java - 在 tomcat 7 线程转储上看到多个 TIMED_WAITING 线程

android - 文本输入在 Flex Mobile 项目中显示 block 而不是阿拉伯文本

c++ - C++ 中的字符串数组是否需要最大维度?