目录
0.前言
最近在学习王道计组的第二章,数据的表示和运算。当学到C语言中int和float类型转换的时候,我便有个问题,为什么int到float会有精度损失?是因为int的有效数值为是31位,而float的有效位是24位(1+23,1被隐藏),网上也没有这个详细的解答(知道float如何存储,但是还是不懂为何精度损失...)。当做了2017年的浮点数统考大题(这个大题出的真是好),我便彻底搞懂了float的存储规则及舍弃。本文就以int转为float的例子,解析精度损失的详细过程。
1.浮点数存储规则(以float为例)
关于浮点数如何存储,分为阶符,阶码,尾数的三个部分,网上和辅导书有很详细的说明,这里我就不过多解释了,如有不懂,看下面大佬的博客。一定要理解浮点数存储规则,再理解下文。

文章通过一个案例分析了C语言中int转float时出现精度损失的原因,重点解释了浮点数(以float为例)的存储结构,包括阶符、阶码和尾数,以及IEEE754标准。当int转换为float时,由于float的有效位数限制,导致某些小数部分无法完全存储,进而产生精度损失。在浮点数计算过程中,按照舍1进1的规则,可能导致结果比原值大1。
3330

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



