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