java - 如何正确比较 Java 中的两个 Float 包装器?

标签 java floating-point

我已经知道如何比较 float ,这不是问题。

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

if(flot1 == flot2) {
    // do something
}

事实上,我总是被教导要做这样的事情:

if(Math.abs(float1 - float2) < epsilon) {
    // do something
}

但问题是当我使用 float 包装器时...例如,有像 equal() 方法一样简单的方法:

if(floatWrapper1.equals(floatWrapper2)) {
    // do something
}

但是阅读文档,这相当于:

if(floatWrapper1.floatValue() == floatWrapper2.floatValue()) {
    // do something
}

这与示例(2)相同,出于比较目的而错误。

在互联网上查找,我发现了一些这样的例子:

if(Float.compare(flotWrapper1, floatWrapper2) == 0) {
    // do something
}

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

最佳答案

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

关于java - 如何正确比较 Java 中的两个 Float 包装器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32700689/

相关文章:

Java Math.pow 四舍五入为整数多次返回相同的数字

java - 以下声明的差异

c - 17位或更多位 double

c - 隐式转换一个浮点常量

c++ - 如何设置浮点值的格式,使其从不使用指数表示法或尾随零?

java - 为什么 MySQL 没有连接到我在 Android Studio 中的应用程序?

java - 当我尝试中断线程时 JFrame 卡住

java - 运行可执行Jar文件的主要方法

c#-4.0 - 如何在 C# 中将 SQLiteDataReader 值转换为 float

C++ 转换为更精确的类型并失去准确性?