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();
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();
你當前做的是將整數,然後將該部門的結果轉換爲雙重結果。因此,操作等同於像現在這種權利:
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());
您可以強制使用浮點數學的,像這樣
double result = ((_nums.size() - p)/((double)_nums.size()));
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.9,你必須像亨利凱特說的那樣做...... – TheLostMind
整數除法。 –
如何使用非整數除法? –
整個表達式'(_nums.size() - p)/ _ nums.size()'的類型是'int'。然後你將它分配給一個'double'。您必須儘早將操作數轉換爲'double':'(_nums.size() - (double)p)/ _ nums.size()'。 –