一、浮点数转换成二进制
52.1=110100.0001100110011(小数部分不能完全转换)
二、表示成二进制科学计数法
1.101000001100110011 * 2^5
三、按IEEE754进行数据存储
因此,再将内存中的数据转换成十进制输出来的数据不是完整的52.1,只是非常接近它。
把你的问题理解为:如何将代码中所有的 int 替换为 float?
sed -e 's/\<int\>/float/' Input.c结果显示在命令行界面,如果想直接修改文件
sed -i 's/\<int\>/float/' Input.c我测试了一下,你的结果可能写反了。而且,测试中发现,如果是short、int类型就没有问题,只是unsigned short , unsigned int有问题
查阅资料也没有非常清晰的说明。
我觉得应该算是C的一个BUG。再等高人吧,看看有没有更清楚的大师。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)