如何正确比较Java中的两个浮点包装器?

如何正确比较Java中的两个浮点包装器?,java,floating-point,Java,Floating Point,我已经知道如何比较浮动,这不是问题所在 当我比较float时,我不能这么做: if(flot1 == flot2) { // do something } 事实上,我总是被教导做这样的事情: if(Math.abs(float1 - float2) < epsilon) { // do something } if(Float.compare(flotWrapper1, floatWrapper2) == 0) { // do something } 但在阅读

我已经知道如何比较浮动,这不是问题所在

当我比较float时,我不能这么做:

if(flot1 == flot2) {
    // do something
}
事实上,我总是被教导做这样的事情:

if(Math.abs(float1 - float2) < epsilon) {
    // do something
}
if(Float.compare(flotWrapper1, floatWrapper2) == 0) {
    // do something
}
但在阅读文档时,这相当于:

if(floatWrapper1.floatValue() == floatWrapper2.floatValue()) {
    // do something
}
这与示例(2)相同,出于比较目的,示例(2)是错误的

在互联网上,我发现了一些类似的例子:

if(Math.abs(float1 - float2) < epsilon) {
    // do something
}
if(Float.compare(flotWrapper1, floatWrapper2) == 0) {
    // do something
}

但是,我想知道这是否也是正确的。那么我应该如何比较两个浮点包装器呢?

简单的答案是因为自动装箱,比较
float
s与比较
float
s没有什么不同。除了空指针检查之外,您可以同等对待它们

您还可以使用
if(Math.abs(float1-float2)
和float…可能是@Bubletan的副本不完全是:op似乎认为它只适用于原语-我添加了一条注释,说它也适用于装箱类型。@assylias哦,是的,没关系。