Reputation: 9783
Is there ever a case where these two methods would return different values given the same inputs?
int compare1(float a, float b)
{
return Double.compare(a, b);
}
int compare2(float a, float b)
{
return Float.compare(a, b);
}
By the same token, is it true (or false) that any number storable in a java's Float can be stored in a java's Double without losing any precision?
Thanks
Upvotes: 5
Views: 1181
Reputation: 500157
Every float
can be represented exactly as a double
. From this it follows that the two functions always return the same result.
Upvotes: 4
Reputation: 887195
Yes; casting doubles to floats can yield different results.
If the difference between a
and b
is too small to show up in a float, compare2()
will return 0
whereas compare1()
would not.
You just edited the question to reverse what you were asking. The new answer is:
I'm almost certain that they will always be the same.
Upvotes: 8
Reputation: 8392
A double
just gives you more bits of precision beyond the decimal place than the float
. If all those those extra bits are zero then you have the same value as the float. So yes, all float
s can be converted to double
s without losing precision.
Upvotes: 1