温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java Float浮点数如何表示

发布时间:2026-11-10 09:25:41 来源:亿速云 阅读:96 作者:小樊 栏目:编程语言

在 Java 中,Float 是 32 位单精度浮点数,遵循 IEEE 754 标准。下面从“结构、内存布局、示例、特殊值”几个方面说明它是如何表示的。


一、Float 的 32 位结构(IEEE 754 单精度)

一个 float 占 4 字节(32 位),分为三部分:

| 1 位符号位 | 8 位指数位 | 23 位尾数位 |
部分 位数 说明
符号位 sign 1 0 表示正数,1 表示负数
指数 exponent 8 采用“偏移码”(bias = 127)
尾数 mantissa 23 实际值 = 1.尾数(规格化数)

二、数值计算公式

对于 规格化浮点数(最常见):

值 = (-1)^sign × (1 + mantissa) × 2^(exponent - 127)

其中:

  • mantissa 是 23 位二进制小数
  • exponent 是 8 位无符号整数

三、举例说明

示例:float f = 5.5f

  1. 转二进制
5.5 = 101.1(二进制)
  1. 规格化
1.011 × 2^2
  1. 各部分:
  • 符号位:0(正数)
  • 指数:2 + 127 = 129 → 10000001
  • 尾数:011 后面补 0 到 23 位
  1. 内存表示(32 位):
0 10000001 01100000000000000000000

四、Java 中查看 Float 的二进制表示

float f = 5.5f;
int bits = Float.floatToIntBits(f);
System.out.println(Integer.toBinaryString(bits));

或:

System.out.println(Integer.toHexString(Float.floatToRawIntBits(f)));

五、特殊值(IEEE 754 规定)

情况 指数 尾数 含义
0 0 0 +0 / -0
非规格化数 0 ≠0 极接近 0 的数
无穷大 255 0 ±∞
NaN 255 ≠0 非数字(如 0/0)

示例:

Float.POSITIVE_INFINITY
Float.NEGATIVE_INFINITY
Float.NaN

六、注意点(很重要)

  • float 不能精确表示很多十进制小数
    0.1f + 0.2f != 0.3f
    
  • 精度约为 6~7 位十进制有效数字
  • 金融计算不要用 float,用 BigDecimal

如果你愿意,我也可以:

  • 对比 float 和 double
  • 讲“为什么 0.1 存不准”
  • 手写一个“float 转二进制”的工具方法
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手