字符串转浮点型应用

发布时间 2023-12-21 17:31:25作者: 飞说晓事

一、    工业应用中的问题

1、      国内自定义协议众多,数值在计算机中存储方式五花八门。

2、      计算机实际存储方式理解不容易或者忘记。

3、      硬件技术发展,让使用存储内存不再是难解决问题,浪费存储内存和传输带宽。

二、    计算机中浮点型简介

1、      浮点型定义

浮点型是计算机表示整数之间的数值类型。简述就是一个有小数点的值,该值就成为一个浮点型的值。

比:3.0、1.23e4、 1.23×10^4。

2、      浮点型标准

根据国际标准 IEEE 754/854浮点数标准是从逻辑上用三元组{S,E,M}来表示一个数 V ,公式如下图所示:

 

 

符号: S ,决定浮点数的是负数(S=1)还是正数(S=0),由一位符号位表示。
有效数:E是一个二进制小数,它的范围在1~2之间, 指数域的二进制表示为e,那么内存中存储的E=e+Bias。(Bias=2^k-1,k为指数域位数,其中float为8,double为11)。
指数:M是2的幂,可正可负,作用是对浮点数加权,由8位或11位的指数域表示  

3、浮点值转二进制

             3.1. 以小数点为界进行拆分

3.2. 整数部分转为二进制

3.3. 小数部分采用的是"2取整法",当乘2之后小数部分得到0就停止计算

      比如:将10进制的8.87转化为2进制的小数?

      整数部分8,转换为二进制100

小数部分是0.87

0.87×2=1.74 取整得:       1 剩下的小数部分为0.74

0.74×2=1.48 取整得:       1 剩下的小数部分为0.48

0.49×2=0.98 取整得:       0 剩下的小数部分为 0.98

0.98×2=1.96 取整得:       1 剩下的小数部分为 0.96

0.96×2=1.92 取整得:       1 剩下的小数部分为 0.92

0.92×2=1.84 取整得:       1 剩下的小数部分为 0.84

到此结束,排列为110111,即结果为0.110111

所以10进制的8.87转化为2进制的小数为1000.110111

4、内存存储

8.87在内存中存储方式?

 

根据公式知道: