比较判断单精度数字Float类

这里主要介绍 Java 中Float类中用于比较和检查float值的方法。

compareTo() 比较两个Float对象所表示的数值

比较两个Float对象所表示的数值。

✍方法声明

public int compareTo(Float anotherFloat);

  • 📥入参:anotherFloat为要比较的Float值。
  • 🪐返回值:
    • 如果anotherFloat在数字上等于Float,则返回0;
    • 如果anotherFloat在数字上小于Float,则返回小于0的值-1;
    • 如果anotherFloat在数字上大于Float,则返回大于0的值1。
    public static void main(String[] args) {
        Float f1 = Float.valueOf("12.001f");
        Float f2 = Float.valueOf("12.001F");
        Float f3 = Float.valueOf("-12.99F");
        Float f4 = Float.valueOf("886F");
        int i1 = f1.compareTo(f2);
        int i2 = f1.compareTo(f3);
        int i3 = f1.compareTo(f4);
        System.out.println(i1);
        System.out.println(i2);
        System.out.println(i3);
    }
0
1
-1

compare() 比较Float对象

比较两个指定的float值。返回整数值的符号与以下调用返回整数的符号相同:new Float(f).compareTo(new Float(f2))

✍方法声明

public static int compare(float fl,float f2);

  • 📥入参:
    • f1:要比较的第一个float值。
    • f2:要比较的第二个float值。
  • 🪐返回值:
    • 返回值如果f1在数字上等于2,则返回0;
    • 如果f1在数字上小于2,则返回小于0的值-1;
    • 如果f1在数字上大于2,则返回大于0的值1。
    public static void main(String[] args) {
        int i1 = Float.compare(12.001f, 12.001f);
        int i2 = Float.compare(12.001f, 886f);
        System.out.println(i1);
        System.out.println(i2);
    }
0
-1

equals() 判断Double对象相等

将此对象与指定对象进行比较。当且仅当参数不是null而是Float对象,且表示的float值与此对象表示的float值相同时,结果为true。为此,当且仅当将方法floatToLongBits(double)应用于两个值所返回的int值相同时,才认为这两个float值相同。

✍方法声明

public boolean equals(Object obj)

  • 📥入参:obj为要比较的对象。
  • 🪐返回值:如果对象相同,则返回true,否则返回false。

在大多数情况下,对于Float类的两个实例f和2,当且仅当f1.floatValue()==f2.floatValue()的值为true时,fl.equals(f2)的值才为true。

但是,有以下两种例外情况:

  • 如果f1和f2都表示Float.NaN,那么即使Float.NaN=Float.NaN的值为false,equals方法也将返回true。
  • 如果f1表示+0.0f,而f2表示-0.0f,或相反,那么即使0.0f=0.0f的值为true,equals测试也将返回false。

该定义使得哈希表得以正确操作。

    public static void main(String[] args) {
        Float f1 = Float.valueOf("12.001f");
        Float f2 = Float.valueOf("12.001F");
        Float f3 = Float.valueOf("-12.99F");
        boolean bool = f1.equals(f2);
        System.out.println(bool);
        System.out.println(f2.equals(f3));
    }
true
false

isInfinite() 判断float值的大小是否是无穷大

判断float的值大小是无穷大,如果是则返回true,否则返回false。

✍方法声明

public boolean isInfinite();

  • 🪐返回值:如果此对象表示的值是正无穷大或负无穷大,则返回true;否则返false。

✍方法声明

判断如果指定数的数值是无穷大,则返回true,否则返回false。

public static boolean isInfinite(float v);

  • 📥入参:v指定要判断的float。
  • 🪐返回值:如果参数是正无穷大或负无穷大,则返回true;否则返回false。
    public static void main(String[] args) {
        float maxValue = Float.MAX_VALUE;
        boolean b1 = Float.isInfinite(maxValue);
        Float f1 = Float.valueOf(Float.POSITIVE_INFINITY);
        boolean b2 = f1.isInfinite();
        System.out.println("Float.MAX_VALUE isInfinite " + b1);
        System.out.println("Float.POSITIVE_INFINITY isInfinite " + b2);
    }
Float.MAX_VALUE isInfinite false
Float.POSITIVE_INFINITY isInfinite true

isNaN方法 判断Float值是否是个非数字值

如果Float值是一个非数字NaN值,则返回true;否则返回false。

✍方法声明

public boolean isNaN();

  • 🪐返回值:如果此对象表示的值是NaN,则返回true;否则返回false。

✍方法声明

判断如果Float值是一个非数字NaN值,则返回true;否则返回false。

public static boolean isNaN(float v)

  • 🪐返回值:如果此对象表示的值是NaN,则返回true;否则返回false。
    public static void main(String[] args) {
        float maxValue = Float.NaN;
        boolean b1 = Float.isNaN(maxValue);
        Float f1 = Float.valueOf(Float.POSITIVE_INFINITY);
        boolean b2 = f1.isNaN();
        System.out.println("Float.NaN isNaN " + b1);
        System.out.println("Float.POSITIVE_INFINITY isNaN " + b2);
    }
Float.NaN isNaN true
Float.POSITIVE_INFINITY isNaN false

📝总结

💡 Float类提供了多种方法来比较Float对象和检查float值的特性。
💡 compareTo()方法用于比较两个Float对象,而compare()方法用于比较两个float原始类型值。
💡 equals()方法用于比较两个Float对象的值是否相等,但它有一些特殊规则,例如Float.NaN等于任何NaN值,而正零和负零被认为是相等的。
💡 isInfinite()方法用于检查数值是否为无穷大,而isNaN()方法用于检查数值是否为NaN。
💡 了解这些方法的正确使用对于处理浮点数比较和检查非常有帮助。

转载请注明出处:码谱记录 » 比较判断单精度数字Float类
标签: