计算机底层系列(五)浮点数和类型转换

本文讨论了为何会对浮点数类型转换产生疑惑,深入解析了浮点数的精度问题,包括IEEE754标准下的浮点数表示方式及其带来的精度和表示范围优势。同时,探讨了不同类型浮点数在精度上的差异,指出由于浮点数的尾数和指数不同,可能导致精度损失,尤其是在从整型转换为浮点型时。
摘要由CSDN通过智能技术生成

目录

一.为什么会对浮点数的类型转换有疑惑?

二.精度问题

1.先daoke一下各种数据类型的转换

 2.浮点数何IEEE754

IEEE754的好处

3.精确度


一.为什么会对浮点数的类型转换有疑惑?

我们学了很多种浮点数的数据类型:

变量类型

定义方式占用字节
单精度float4字节
双精度double8字节
长精度long double12字节

我们知道 int 一般是占用4个字节,32位,是一个有符号的数据类型(not U),也就是他1,111111111111111111111111111111111111,那float也是32位,为啥转换了之后,

1.1->1
-1.2->-1
0.2->0  

二.精度问题

1.先daoke一下各种数据类型的转换

看图说话,低字节转向高字节进行计算

 2.浮点数何IEEE754

eg:32位浮点数

符号位 S(Sign)决定数是正数(s=0)还是负数(s=1),而对于数值 0 的符号位解释则作为特殊情况处理。

有效数字位 M(Significand)是二进制小数,它的取值范围为 1~2-ε,或者为
0~1-ε。它也被称为尾数位(Mantissa)、系数位(Coefficient),甚至还被称作“小数”。

指数位E(Exponent)是 2 的幂(可能是负数),它的作用是对浮点数加权。(规格化后小数点第一位总是1,故规定第一位默认的“1”不明显表示出来。这样可用23个数位表示24位尾数。

因为原码对称,故其表示范围关于原点对称

 IEEE754是一个标准,他提供了两种基本浮点格式,32位单精度何64位双精度格式哦

32位单精度是跟上面的图一样,64位双精度是包含了11位阶码和52位尾数的。

IEEE754的好处

        1.尾数可表示多一位,从而推高浮点数的精度

        2.指数的克表示范围更大,因此,浮点数 可表示范围也更大

对于IEEE754,阶码全0.1有特别的解释!

 

 

3.精确度

        我的理解是,由于阶码尾数的不同,浮点数的精确度也不同,因为随着阶码位数增多,小数点后面可以表示的位数增多,有很多时候会发现int类型的数据转换成float是可以的,但int数据被舍入了,因为float的精度比int低。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tomorrowave

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值