在这里,我就不解释那些ieee的术语,因为大家只要一搜索,到处都有。这里我用一个直观的实例解释float浮点数在intel机器上的存储方式,并给出计算方法,让人能一目了然的明白如何将二进制存储的浮点数的转换成我们常见的十进制形式,并解释为何有的浮点数不能被精确表示,如12.34常常被表示为12.3400001526。
对于十进制数12.34如何转换成二进制存储的浮点数,我们需要分3步走
1、先将12.34转换成二进制表示,整数和小数部分分别单独转换
整数部分是不停的除二,将余数由后向前排列
即12=1100
小数部分是不停的乘二,将乘积的整数部分由前向后排列
即0.34=0.01010111......,我们发现小数部分*2永远乘不尽,就是说不可能出现没有小数的时候,所

本文详细介绍了浮点数在Intel处理器上的二进制存储结构,通过实例解析了浮点数转换为二进制的过程,以及浮点数无法精确表示某些十进制数的原因。同时,提供了一个C++函数IsFloatAInt来判断一个浮点数是否为整数,该函数基于浮点数的存储布局检查指数和尾数。
最低0.47元/天 解锁文章
2771

被折叠的 条评论
为什么被折叠?



