在 Java 中,float 是一种 32 位单精度浮点数,遵循 IEEE 754 标准。下面从 表示方式、结构、范围、精度、示例 几个方面说明。
一个 float 占 32 位(4 字节),结构如下:
| 符号位 (1 bit) | 指数位 (8 bits) | 尾数位/有效数字 (23 bits) |
0 → 正数1 → 负数1(规格化数)| 项目 | 说明 |
|---|---|
| 最小正正规数 | 1.4E-45 |
| 最大正值 | 3.4028235E38 |
| 精度 | 约 6~7 位十进制有效数字 |
System.out.println(Float.MIN_VALUE); // 1.4E-45
System.out.println(Float.MAX_VALUE); // 3.4028235E38
因为 很多十进制小数不能精确用二进制表示。
float a = 0.1f;
System.out.println(a); // 0.1
System.out.printf("%.10f", a); // 0.1000000015
✅ 表面上显示 0.1
❌ 实际存储是近似值
f 或 Ffloat a = 3.14f; // ✅
float b = 3.14; // ❌ 编译错误(默认是 double)
float c = 1.23e5f; // 123000.0
| 对比项 | float | double |
|---|---|---|
| 位数 | 32 | 64 |
| 精度 | 6~7 位 | 15~16 位 |
| 后缀 | f |
默认 |
| 性能 | 略快(但差别很小) | 更常用 |
✅ 实际开发中更推荐 double
Float.POSITIVE_INFINITY
Float.NEGATIVE_INFINITY
Float.NaN
示例:
float x = 1.0f / 0.0f; // Infinity
float y = 0.0f / 0.0f; // NaN
✅ 适合:
❌ 不适合:
Java 的
float使用 IEEE 754 的 32 位单精度浮点数表示,由符号位、指数位和尾数位组成,能表示大范围数值,但存在精度误差。
如果你愿意,我可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。