C语言|深入浅出讲解int转换为float全过程(附2017年统考大题案例)

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

目录

0.前言

1.浮点数存储规则(以float为例)

2.用案例讲解float从真值到存储的过程

a) 案例

b)问题出现

c).问题分析

 i). 真值计算

 ii). int和float存储

3.int转换float的过程


0.前言

最近在学习王道计组的第二章,数据的表示和运算。当学到C语言中int和float类型转换的时候,我便有个问题,为什么int到float会有精度损失?是因为int的有效数值为是31位,而float的有效位是24位(1+23,1被隐藏),网上也没有这个详细的解答(知道float如何存储,但是还是不懂为何精度损失...)。当做了2017年的浮点数统考大题(这个大题出的真是好),我便彻底搞懂了float的存储规则及舍弃。本文就以int转为float的例子,解析精度损失的详细过程。

1.浮点数存储规则(以float为例)

关于浮点数如何存储,分为阶符,阶码,尾数的三个部分,网上和辅导书有很详细的说明,这里我就不过多解释了,如有不懂,看下面大佬的博客。一定要理解浮点数存储规则,再理解下文。

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值