2014-01-22 22 views
1
int p = 6; 
System.out.println(_nums.size() + ", " + p); 

64, 6 

爲什麼result等於0.0而不是0.9?除法後雙參數等於0.0

double result = (_nums.size() - p)/_nums.size(); 
+4

整數除法。 –

+0

如何使用非整數除法? –

+1

整個表達式'(_nums.size() - p)/ _ nums.size()'的類型是'int'。然後你將它分配給一個'double'。您必須儘早將操作數轉換爲'double':'(_nums.size() - (double)p)/ _ nums.size()'。 –

回答

3

你當前做的是將整數,然後將該部門的結果轉換爲雙重結果。因此,操作等同於像現在這種權利:

int intermediate = ((_nums.size() - p)/_nums.size()); // This can only be an int (e.g. 0). 
double result = (double) intermediate; // Now this is just the double value of that int (0.0). 

要做到「真」師帶整數,只投其中一人一double你把之前。這將強制除法操作使用浮點運算,因爲它具有浮點(double)輸入。

double result = (_nums.size() - p)/((double) _nums.size()); 
1

您可以強制使用浮點數學的,像這樣

double result = ((_nums.size() - p)/((double)_nums.size())); 
1
double result = (_nums.size() - p)/_nums.size(); 

是相同

double result = (double) (int)(_nums.size() - p)/ (int) _nums.size(); 
which equals 
     =(double) 6/64; 
     =(double) 0 
     =0.0 
+0

得到0.9,你必須像亨利凱特說的那樣做...... – TheLostMind