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
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.
Every float
can be represented exactly as a double
. From this it follows that the two functions always return the same result.
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.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.