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();
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();
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());
You can force the use of floating-point math like so
double result = ((_nums.size() - p)/((double)_nums.size()));
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