如何正确比较Java中的两个浮点包装器?
我已经知道如何比较浮动,这不是问题所在 当我比较float时,我不能这么做:如何正确比较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 } 但在阅读
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哦,是的,没关系。