java如何表示浮点
浮点数的基本表示
Java中使用float和double两种基本数据类型表示浮点数。float是单精度浮点数,占用4字节(32位);double是双精度浮点数,占用8字节(64位)。默认情况下,小数常量(如3.14)会被编译器视为double类型。
float f = 3.14f; // 必须加后缀f或F
double d = 3.14; // 可直接赋值
浮点数的科学计数法
Java支持科学计数法表示浮点数,使用E或e表示指数部分:
double sciNum = 1.23e4; // 等价于12300.0
浮点数的精度问题
由于二进制浮点数的固有特性,某些十进制小数无法精确表示。例如:
System.out.println(0.1 + 0.2); // 输出0.30000000000000004
高精度计算方案
当需要精确计算时,可使用BigDecimal类:
BigDecimal a = new BigDecimal("0.1");
BigDecimal b = new BigDecimal("0.2");
System.out.println(a.add(b)); // 精确输出0.3
浮点数的特殊值
Java浮点数包含特殊常量:
Double.POSITIVE_INFINITY // 正无穷
Double.NEGATIVE_INFINITY // 负无穷
Double.NaN // 非数字
浮点数的比较注意事项
直接使用==比较浮点数可能因精度问题导致错误,推荐以下方法:

// 使用误差范围比较
boolean isEqual = Math.abs(a - b) < 1e-6;
// 使用BigDecimal的compareTo方法
new BigDecimal("0.1").compareTo(new BigDecimal("0.2")) == 0






