浮点与双精度(Java)
有没有过这样的情况,在相同的输入下,这两种方法会返回不同的值浮点与双精度(Java),java,floating-point-precision,Java,Floating Point Precision,有没有过这样的情况,在相同的输入下,这两种方法会返回不同的值 int compare1(float a, float b) { return Double.compare(a, b); } int compare2(float a, float b) { return Float.compare(a, b); } 同样,可以存储在java浮点中的任何数字都可以存储在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浮点中的任何数字都可以存储在java的Double中而不会丢失任何精度,这是真的(还是假的)
谢谢是的;将双倍体铸造到浮体可以产生不同的结果
如果a
和b
之间的差异太小,无法以浮点形式显示,compare2()
将返回0
,而compare1()
将不返回
你刚刚编辑了这个问题,把你的问题颠倒过来了。新的答案是:
我几乎可以肯定它们总是一样的。A
double
只会比float
提供超过小数点的精度。如果所有这些额外的位都为零,那么您的值与浮点值相同。因此,是的,所有的float
s都可以转换成double
s而不会丢失精度。由此可知,这两个函数总是返回相同的结果。关于float是double的子集,我的问题是什么?@user1508893:我很确定它是,但我不确定。实际上,我在这个问题上犯了一些错误。刚刚更新过。很抱歉它还提供了1023的最大指数,而不是127。