1. 浮点数表示法:
在计算机中,浮点数通常使用IEEE 754标准表示。这个标准定义了两种浮点数表示格式:单精度(32位)和双精度(64位)。每个格式都有三个部分:
-
符号位(Sign Bit): 用于表示正数或负数,0表示正数,1表示负数。
-
指数部分(Exponent): 用于表示数的阶码,以补码形式存储,用于指定数的数量级。
-
尾数部分(Fraction/Mantissa): 用于存储数的小数部分,通常为二进制小数。
2. 单精度和双精度浮点数:
-
单精度浮点数(32位):
- 符号位:1位
- 指数部分:8位
- 尾数部分:23位
-
双精度浮点数(64位):
- 符号位:1位
- 指数部分:11位
- 尾数部分:52位
3. 浮点数运算:
浮点数运算涉及加法、减法、乘法和除法等操作,但由于浮点数表示的有限性,可能导致精度损失和舍入误差。在进行浮点数运算时,应当注意避免累积误差的积累。
4. 浮点数的特殊值:
-
正零和负零: 浮点数中存在正零和负零,它们在数值上相等但在符号上不同。
-
NaN(Not a Number): 用于表示未定义或无效的操作的结果,例如0/0。
-
无穷大: 表示超过浮点数表示范围的数值。
5.浮点数精度:
浮点数的有限表示意味着存在精度限制。在进行浮点数运算时,尤其是迭代性运算,可能会引入舍入误差。这可能导致结果与数学预期值之间的差异,特别是在进行大量计算时。
6.浮点数比较:
注意!注意!注意!注意!注意!注意!注意!注意!
别直接拿两个浮点数判断是否相等
//错误
if a==b
//推荐
if abs(a - b) < epsilon
由于精度限制,直接比较两个浮点数是否相等可能不是明智的选择。通常,我们使用一个小的容差值(epsilon)来判断两个浮点数是否足够接近。