1
public class test {
  public static void main(String[] args) {
   int total = 2;
   int rn = 1;
   double rnp = (rn / total) * 100;
   System.out.println(rnp);
 }
}

为什么它打印 0.0 而不是 50.0?

https://www.google.com/search?q=100*(1%2F2)&aq=f&oq=100*(1%2F2)

4

4 回答 4

7

除法发生在整数空间中,没有分数的概念,你需要类似的东西

double rnp = (rn / (double) total) * 100
于 2013-03-26T23:05:43.100 回答
2

您在这里调用整数除法

(rn / total)

整数除法向零舍入。

试试这个:

double rnp = ((double)rn / total) * 100;
于 2013-03-26T23:06:18.053 回答
0

在 java 和大多数其他编程语言中,当您将两个整数相除时,结果也是一个整数。剩余部分被丢弃。因此,1 / 2返回0。如果你想返回一个floatdouble值,你需要做类似的事情1 * 1.0 / 2,这将返回0.5。将整数乘以或除以 double 或 float 会将其转换为该格式。

于 2013-03-26T23:08:05.797 回答
0
public class test
{
  public static void main(String[] args) 
  {
   int total = 2;
   int rn = 1;
   double rnp = (rn / (float)total) * 100;
   System.out.println(rnp);
 }
}
于 2013-03-26T23:08:41.827 回答