一、浮点数存储格式
符号(sign) s是符号位,1表示负,0表示正
阶码(exponent) E的作用是对浮点数加权,这个权重是2的E次幂
尾数(significand) M是一个二进制小数
二、举例说明
三、浮点数转整数规则
浮点数转整型数时并没有使用舍入规则,而是直接抛弃小数部分;
但浮点数打印指定位小数时会采用向偶数舍入规则。
四、浮点和整型转换丢失精度问题
《深入理解计算机系统》 2.4.6 C语言中的浮点数
从int转换成float,数字不会溢出,但是可能被舍入;
从int或float转换成double,不会丢失精度;
从double转换成float,可能溢出成正无穷或负无穷,另外由于精确度较小,还可能被舍入;
从float或者double转换成int,值会向零舍入;当浮点数值超过整数值的最大值时,就会溢出。则正数就可能变成负数。
五、使用浮点数注意事项
(1)浮点数不能直接用等于号做比较
#define LIMIT 1.0e-4
void func(float d1, float d2)
{
float diff = d1-d2;
if(-LIMIT <= diff && diff <= LIMIT)
{
;
}
}