简体   繁体   中英

float vs double (in Java)

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.

\n

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM