Java算术部门

时间:2013-03-26 23:04:58

标签: java integer-arithmetic

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 个答案:

答案 0 :(得分:7)

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

这样的东西
double rnp = (rn / (double) total) * 100

答案 1 :(得分:2)

你在这里调用整数除法

(rn / total)

整数除法向零舍入。

请改为尝试:

double rnp = ((double)rn / total) * 100;

答案 2 :(得分:0)

在java和大多数其他编程语言中,当你划分两个整数时,结果也是一个整数。剩下的就丢弃了。因此,1 / 2会返回0。如果您想要返回floatdouble值,则需要执行1 * 1.0 / 2之类的操作,这将返回0.5。将整数乘以或除以double或float将其转换为该格式。

答案 3 :(得分: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);
 }
}