实数的表示与比较

1.实数的表示
定点法:小数点固定的位于实数所有数字中间的某个位置,小数点位置决定了固定位数的整数部分和小数部分,整数位数决定了实数的范围,小数位数决定了实数的精度。(嵌入式系统中应用)
浮点数表示
利用科学技术法表示实数,实数由尾数(Mantissa),基数(Base),指数(Exponent),符号位组成,尾数中数字的个数称为精度。
IEEE表示标准
1) 32位浮点数表示(单精度) >> 符合位(1)+指数位(8)+尾数位(23)
2) 64位浮点数表示(双精度) >> 符合位(1)+指数位(11)+尾数(52)
由于指数可正可负,8位指数位表示的指数范围应该为:-127-128,11位指数范围为:-1023-1024. 所以指数部分的存储采用移位存储,存储的数据为原始数据+127(8位指数),或原始数据+1023(16位指数)。IEEE规定尾数中的最高位1可以省去。
实数表示浮点数,小数部分*2, 如果小数部分*2一直得不到整数,就会超出尾数的位数,所以浮点数表示实数会有误差,并且单精度与双精度间的转换也可能出现误差,例如float a = 2.2。

2. 浮点数比较大小
由于浮点数对实数的表示可能存在误差以及单双精度转换间的可能出现误差,所以浮点数间是不能用==,!=比较大小的,否则可能会出现错误结果, 同理也是不能用==或!=判定浮点数是否为0。
浮点数比较大小:
bool IsEqual(float a, float b, float epsilon)
{
if(fabs(a - b) < epsilon)
return TRUE;
else
return FLASE;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值