5

在给定相同输入的情况下,这两种方法是否会返回不同的值?

int compare1(float a, float b)
{
    return Double.compare(a, b);
}

int compare2(float a, float b)
{
    return Float.compare(a, b);
}

出于同样的原因,任何可存储在 java 的 Float 中的数字都可以存储在 java 的 Double 中而不会丢失任何精度,这是否正确(或错误)?

谢谢

4

3 回答 3

8

是的; 将双精度数转换为浮点数会产生不同的结果。

a如果和之间的差异b太小而无法显示在浮点数中,compare2()则会返回0compare1()不会。


您刚刚编辑了问题以扭转您的要求。新的答案是:

我几乎可以肯定他们永远都是一样的。

于 2013-01-21T18:01:03.780 回答
4

每个float都可以精确地表示为double. 由此可见,这两个函数总是返回相同的结果。

于 2013-01-21T18:27:59.233 回答
1

Adouble只是为您提供了比float. 如果所有这些额外的位都为零,那么您的值与浮点数相同。所以是的,所有floats 都可以转换为doubles 而不会丢失精度。

于 2013-01-21T18:09:56.120 回答