1
int p = 6;
System.out.println(_nums.size() + ", " + p);

64, 6

Why the result is equal to 0.0 instead of 0.9?

double result = (_nums.size() - p)/_nums.size();
Klausos Klausos
  • 15,308
  • 51
  • 135
  • 217

3 Answers3

3

What you're currently doing is dividing integers, and then casting the result of that division to a double. So the operation is equivalent to something like this right now:

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).

To do "true" division with integers, just cast one of them to a double before you divide. This will force the division operation to use floating-point arithmetic, since it has floating-point (double) inputs.

double result = (_nums.size() - p) / ((double) _nums.size());
Henry Keiter
  • 16,863
  • 7
  • 51
  • 80
1

You can force the use of floating-point math like so

double result = ((_nums.size() - p)/((double)_nums.size()));
Elliott Frisch
  • 198,278
  • 20
  • 158
  • 249
1
double result = (_nums.size() - p)/_nums.size();

is same as

double result = (double)  (int)(_nums.size() - p)/ (int) _nums.size();
which equals
      =(double) 6/64;
      =(double)  0   
      =0.0
TheLostMind
  • 35,966
  • 12
  • 68
  • 104