在 Java 中,Float(浮点数)不能直接用 == 比较大小或相等,因为浮点数存在精度误差。下面是正确、常用的比较方式。
==float a = 0.1f;
float b = 0.1f;
System.out.println(a == b); // 可能是 true(同字面量)
但是如果经过计算:
float a = 1.0f / 3;
float b = 0.33333334f;
System.out.println(a == b); // false
浮点数在运算中容易产生微小误差,所以不要直接用 == 判断相等。
float a = 1.2f;
float b = 3.4f;
if (a > b) {
System.out.println("a > b");
} else if (a < b) {
System.out.println("a < b");
} else {
System.out.println("a == b");
}
✅ 适合明确知道不会因精度出问题的情况(如范围判断)
Float.compare()(推荐)int result = Float.compare(a, b);
if (result > 0) {
// a > b
} else if (result < 0) {
// a < b
} else {
// a == b
}
✅ 推荐用于排序、集合比较
Float 包装类(对象比较)Float a = 1.2f;
Float b = 3.4f;
if (a.compareTo(b) > 0) {
// a > b
}
⚠️ 不要用 a.equals(b) 当大小比较
equals 只判断“值是否相等”float a = 0.1f + 0.2f;
float b = 0.3f;
float epsilon = 1e-6f;
if (Math.abs(a - b) < epsilon) {
System.out.println("a 约等于 b");
}
✅ 这是最标准、最安全的做法
Float.floatToIntBits()(不常用)Float.floatToIntBits(a) == Float.floatToIntBits(b)
⚠️ 不推荐日常使用
| 场景 | 推荐方式 |
|---|---|
| 比较大小 | Float.compare(a, b) |
| 判断近似相等 | Math.abs(a - b) < epsilon |
| 排序 | Float.compare() / Comparator |
| 不要用 | == 判断相等 |
如果你有具体业务场景(比如:金额、坐标、科学计算、排序),我可以给你更合适的写法。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。