Reputation: 93
I have a list of double values that I don't know the range of and I want to find the maximum value. However, the Math.max function is giving a curious result for this sample code:
double a = -100.0;
double maxA = Double.MIN_VALUE;
maxA = Math.max(maxA, a);
System.out.println(maxA);
And the output is:
4.9E-324
So for some reason, Double.MIN_VALUE is being considered the max when compared to -100.0.
Why?
Upvotes: 5
Views: 2253
Reputation: 41822
MIN_VALUE is:
A constant holding the smallest positive nonzero value of type double, 2^(-1074).
Not the most negative possible value.
Upvotes: 17
Reputation: 4158
MIN_VALUE A constant holding the smallest positive nonzero value of type double.
Note "positive" value.
You are comparing it with a negative value is 1 > -1.
Upvotes: 0
Reputation: 240900
Its pretty obvious -100 is less than 4.9E-324
-100 , -99 ..... -1 , 0 , 4.9E-324 , 1 , 2 , 3......
Upvotes: 0