在给定相同输入的情况下,这两种方法是否会返回不同的值?
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 中而不会丢失任何精度,这是否正确(或错误)?
谢谢
在给定相同输入的情况下,这两种方法是否会返回不同的值?
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 中而不会丢失任何精度,这是否正确(或错误)?
谢谢
是的; 将双精度数转换为浮点数会产生不同的结果。
a
如果和之间的差异b
太小而无法显示在浮点数中,compare2()
则会返回0
而compare1()
不会。
您刚刚编辑了问题以扭转您的要求。新的答案是:
我几乎可以肯定他们永远都是一样的。
每个float
都可以精确地表示为double
. 由此可见,这两个函数总是返回相同的结果。
Adouble
只是为您提供了比float
. 如果所有这些额外的位都为零,那么您的值与浮点数相同。所以是的,所有float
s 都可以转换为double
s 而不会丢失精度。