2013-03-26 91 views
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?Java算術部門

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

+0

因爲在整數除法中'1/2'是0。 – corsiKa 2013-03-26 23:05:54

+0

[Division in Java總是會導致零(0)?](http://stackoverflow.com/questions/10455677/division-in-java-always-results-in-zero-0) – 2013-03-26 23:06:57

+1

也可能是重複的考慮到[C程序設計師](http://stackoverflow.com/questions/8906722/c-programming-division)的重複,考慮到答案是一樣的。 – corsiKa 2013-03-26 23:08:15

回答

7

該部門在整數空間時,沒有概念的部分,你需要像

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

要調用此

(rn/total) 

整數除法輪整數除法趨向於零。

試試這個:

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

仔細觀察。演員在分裂之前。 – Kyurem 2013-03-26 23:08:34

+0

@Johan,在這個地方演員仍然有效。 – rgettman 2013-03-26 23:09:09

+0

結果你的觀察效果比我的好:) – 2013-03-26 23:12:31

0

在java中,和大多數其他編程語言,當你劃分兩個整數,結果也是整數。其餘部分被丟棄。因此,1/2返回0。如果您想要返回floatdouble值,則需要執行類似1 * 1.0/2的操作,該操作將返回0.5。將整數乘以或用double或float將其轉換爲該格式。

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