精华内容
下载资源
问答
  • 关于16进制浮点数对于大小为32-bit的浮点数(32-bit为单精度,64-bit浮点数为双精度,80-bit为扩展精度浮点数),1、其第31 bit为符号位,为0则表示正数,反之为复数,其读数值用s表示;2、第30~23 bit为幂数,其读...

    文章来源:http://blog.csdn.NET/educast/article/details/8522818

    感谢原作者。

     

    关于16进制浮点数
    对于大小为32-bit的浮点数(32-bit为单精度,64-bit浮点数为双精度,80-bit为扩展精度浮点数), 
    1、其第31 bit为符号位,为0则表示正数,反之为复数,其读数值用s表示; 
    2、第30~23 bit为幂数,其读数值用e表示; 
    3、第22~0 bit共23 bit作为系数,视为二进制纯小数,假定该小数的十进制值为x;

    则按照规定,该浮点数的值用十进制表示为: 
    = (-1)^s * (1 + x) * 2^(e - 127)

    对于49E48E68来说, 
    1、其第31 bit为0,即s = 0 
    2、第30~23 bit依次为100 1001 1,读成十进制就是147,即e = 147。 
    3、第22~0 bit依次为110 0100 1000 1110 0110 1000,也就是二进制的纯小数0.110 0100 1000 1110 0110 1000,其十进制形式为0.78559589385986328125,即x = 0.78559589385986328125。

    这样,该浮点数的十进制表示 
    = (-1)^s * (1 + x) * 2^(e - 127) 
    = (-1)^0 * (1+ 0.78559589385986328125) * 2^(147-127) 
    = 1872333

    以上内容为IEEE的标准,现在有个问题,假设我有两台设备在通讯,一个设备向另外一个设备发送数据,这个数据是浮点数,那么我怎么来发送这个数据呢?怎么让接受方知道发送来的是个浮点数呢?而且发送数据要尽量短,最好还要固定长度,也许有人会怎么做:A发送数据3.7586给B,A先将这个浮点数乘以10000变成整型37586,然后将这个整数发送给B,这样使用的弊端是:1、B要事先知道A将这个数字放大了多少倍。2、A需要做一次浮点数的乘法运算,而B要做一次浮点数的除法运算,这对于单片机来说是个负担。3、这样使用会多占用发送数据。因为事先没人知道这个浮点数到底多大。

    想了半天,觉得使用IEEE的浮点数规则来发送是最可靠的,因为任何浮点数都被表示成4个字节,这对发送和接收双方都是个好消息,只要双方都知道要进行浮点数的发送就可以了。而且IEEE格式浮点数的转换是机器内部执行的,我们不再需要任何的转换,不增加运算量,不增加代码量。
    按照这个原则,编写了测试代码如下:
    发送方A:
    float fSend; //A需要发送的浮点数据
    char chSend[4]; //发送缓冲,经过转换后的浮点数据,变成一个字符型数组。
    //以下为转换
    chSend[0] = *((char *)(&fSend));
    chSend[1] = *((char *)(&fSend) + 1);
    chSend[2] = *((char *)(&fSend) + 2);
    chSend[3] = *((char *)(&fSend) + 3);

    此时A就可以将这个数字发送给B了,B接收到的是4个字节表示的一个浮点数,但需要经过如下转换使用:

    float fReceive; //接收到的浮点数
    char chReceive[4];//接收缓冲。B将接收到的4个字节保存在这里。
    //以下为转换
    *((char *)(&fReceive)) = chReceive[0];
    *((char *)(&fReceive) + 1) = chReceive[1];
    *((char *)(&fReceive) + 2) = chReceive[2];
    *((char *)(&fReceive) + 3) = chReceive[3];

    好了,此时的B已经得到了一个浮点数fReceive;

    转载于:https://www.cnblogs.com/zhangbing12304/p/7027965.html

    展开全文
  • C语言如何输出双精度浮点型数据

    千次阅读 2019-01-01 17:09:00
    1、双精度浮点型数据用%lf输出。因为double是8个字节的,float是4个字节的,%f 的格式就是4个字节的,而 %lf 就是8个字节的。 例如:printf("%lf\n",x); 转载于:...

    1、双精度浮点型数据用%lf输出。因为double是8个字节的,float是4个字节的,%f 的格式就是4个字节的,而 %lf 就是8个字节的。  例如:printf("%lf\n",x);

    转载于:https://www.cnblogs.com/lijianmin6/p/10205243.html

    展开全文
  • C语言双精度浮点型什么意思

    千次阅读 2008-10-20 09:40:00
    双精度型占8 个字节(64位)内存空间 其数值范围为3.4E-38~3.4E+38 double(双精度说明符) 单精度占4个字节(32位)内存空间 float(单精度说明符) 其数值范围为1.7E-308~1.7E+308 只能提供七位有效数字 可...
    双精度型占8 个字节(64位)内存空间 其数值范围为3.4E-38~3.4E+38 double(双精度说明符) 单精度型占4个字节(32位)内存空间 
    float(单精度说明符)  
    
    
     其数值范围为1.7E-308~1.7E+308 只能提供七位有效数字 可提供16位有效数字 
    展开全文
  • 浮点型数据分为单精度浮点型(float)和双精度浮点型(double). 单精度(float) 单精度浮点值 取值范围:1.2E-38 到 3.4E+38 精度:6 位小数 单精度浮点值。单精度是这样的格式,1位符号,8位指数,23位小数。 上述图片是...

    C语言学习之浮点型数据

    浮点数

    浮点型数据分为单精度浮点型(float)和双精度浮点型(double).
    单精度(float)
    单精度浮点值
    取值范围:1.2E-38 到 3.4E+38
    精度:6 位小数
    单精度浮点值。单精度是这样的格式,1位符号,8位指数,23位小数。
    在这里插入图片描述
    上述图片是计算机将float型数据存储的形式描述。
    双精度浮点值
    取值范围:2.3E-308 到 1.7E+308
    精度: 15 位小数
    双精度是1位符号,11位指数,52位小数。
    在这里插入图片描述
    上述图片是计算机将float型数据存储的形式描述。
    具体的存储原理以单精度浮点数为例
    二进制的存储形式,
    首位是符号位,0代表正数,1代表负数。
    23~30位为指数位,
    0~22位为小数位

    下面关于指数位进行详细介绍

    指数位也称为阶码
    阶码:在机器中表示一个浮点数时需要给出指数,这个指数用整数形式表示,这个整数叫做阶码。
    阶码位数越多,可表示的数的范围越大;尾数越多,所表示的数的精度越高。
    3.375为例,3的二进制为011,0.375的二进制为011,那么3.375的二进制可以写成11.011,用科学计数法的形式写,就是1.1011x10,即 指数位是1;同理 120.25的二进制形式为1111000.01,用科学计数法的形式写就是1.11100001x10^(+6),即指数位是+6,在指数位有+6,那么就有-6,又因为指数位一个有8位,范围是-127~128,
    为了消除负数对指数的影响,就增加了一个偏移量的概念,在float中偏移量为127,这样就是所有的数均大于等于0了,那么偏移后,指数的范围是0~255.
    例如 1+127=128,其转化为二进制形式为10000000
    6+127=133,其转化为二进制形式为10000101

         那么最终上述的两个例子在计算机中的存储结果为
         1  10000000  10110000000000000000000   -----3.375
         1  10000101  11100001000000000000000   ------120.25
    

    细心观察的话就发现,科学技术法表示的整数位上的1 并未写入上述的存储结果之中,这是因为1肯定始终确定的,那么就省略了,这样做相当于省了1bite空间表示,可以认为是提高了精确度。
    下面是将十进制数转化为二进制数的程序

    //将十进制小数分别求其整数的二进制、小数的二进制,并分别输出
    #include<stdio.h>
    #include<stdlib.h>
    int fun(int n)
    {
    	if (n){
    		fun(n / 2);
    		printf("%d", n & 1);
    	}
    	if (n==0)
    	printf("%d", n & 1);
    }
    int fun1(float f)
    {
    	int flat = 1;
    	int number = 0;
    	while (flat)
    	{
    		int num;//用来存储f的整数部分
    		f = f * 2;
    		num = (int)f;
    		f = f - num;
    		printf("%d", num);
    		number++;
    		if (f == 0)
    			flat = 0;
    	}
    }
    int main()
    {
    	float ff = 120.25;//以一个实际小数为例
    	int Num;
    	if (ff > 1)
    	{
    		Num = (int)ff;//求小数的整数部分
    		ff = ff - Num;//求小数的小数部分
    	}
    	else
    	{
    		Num = 0;
    	}
    	fun(Num);
    	printf("\n");
    	fun1(ff);
    	printf("\n");
    }
    

    将十进制小数部分转化为二进制的基本原理的C语言核心代码

    int fun1(float f)
    {
    	int flat = 1;
    	int number = 0;
    	while (flat)
    	{
    		int num;//用来存储f的整数部分
    		f = f * 2;
    		num = (int)f;
    		f = f - num;
    		printf("%d", num);
    		number++;
    		if (f == 0)
    			flat = 0;
    	}
    }
    

    关于double型数据的存储过程本质上类似,但是由于其存储大小为8个字节,因此其指数位的偏移量是1023,除此之外,没什么不同,当然了,0也比较多。
    除了float double型数据,还有long double 型数据,其存储大小为16字节,取值范围为3.4E-4932 到 1.1E+4932,精度为19 位小数。
    本篇博客参考了一下一篇文档
    C语言浮点数存储方式(其中含有较多的图片,更利于理解吧)

    展开全文
  • c语言基础之浮点型与字符型数据

    千次阅读 2016-09-30 19:20:22
    C语言中的浮点数就是平常所说 的实数。 一、浮点数有两种表示形式 (1)十进制小数形式(它由数字和小数点组成) (2)指数形式(字母e(或E)之前必须有数字,且e后面的指数必须...double 双精度浮点数 (64位) lon
  • C语言 浮点型

    千次阅读 2019-03-24 22:01:54
    浮点型 Name Description Size* Range*signed: float Floating point number.(浮点型) 4bytes +/- 3.4e +/- 38 (~7 ...Double precision floating point number.(双精度浮点型) 8bytes +/- 1.7e +/- 308 (...
  • c语言中将一个浮点型赋值给整型时,不会四舍五入,会直接舍去小数部分的数据,也可以认为是执行了下取整运算。将浮点数(单双精度)转换为整数时,将舍弃...扩展资料:C语言中其它数据类型的转换:1、单、双精度浮点型...
  • c语言)单、双精度

    2020-03-25 21:20:28
    单精度型 1.用符号float表示 2. 分配4个字符 3.数值范围3.4E-38~3.4E+38,提供七个有效数字 ...4.后缀为lf或LF表示双精度浮点型(若无后缀则默认为double) 单双精度浮点型之间的赋值 1.将float类型的变量赋...
  • 浮点型变量 1.类型:(1)单精度型:float (输入:%f,输出:%f) 4个字节 有效数字6~7位 (2)双精度型:double (输入:%lf,输出:%f) 8个字节 有效数字15~16位 2.输入:(1)小数形式(%f):86.356,95....
  • C语言学习 单精度、双精度各有几位小数? 单精度有6位小数,双精度有15位小数。 单精度数(float)在32位计算机中存储占用4字节,也就是32位,有效位数为7位,小数点后6位。 双精度数(double)在32位计算机中...
  • 浮点型变量精度问题

    2013-07-10 23:13:05
    c语言中,单精度浮点型的精度为7位有效数字,双精度浮点型的精度为16位有效数字,超过此有效数字的部分会被“四舍五入”,python decimal对象的精度可以达到任意值(可以很大,通过getcontext.prec = *来设置精度...
  • c语言float小数点精度

    千次阅读 2020-05-08 21:27:50
    C语言中浮点型一般分为float单精度型、double双精度型、long double长精度型,单精度浮点型小数点后面有效数字为67位和双精度浮点型小数点后面有效数字为1516位。单精度为32位,双精度为64位,8位为一个字节。 //...
  • C语言格式输出-------浮点型

    千次阅读 2019-11-15 21:01:17
    c语言浮点型包含两种类型:单精度(float)、双精度(double) 二者的区别: 1)二者所占的内存大小不同。 float占用4个字节,double占用8个字节。 // VS2019 #include<stdio.h> #include<stdlib.h> ...
  • 浮点型还包括长双精度型 1、整型数据 包括整型变量和整型常量 1)整型变量: -基本类型为int型,在整型的表示符号int前加上不同的修饰符,就可以将int型扩展成别的类型,如short int -用有符号(signed)和无符号...
  • 1, C语言提供了几个标准库函数,可以将任意类型(整型、长整型、浮点型等)的数字转换为字符串,下面列举了各函数的方法及其说明。...● ecvt():将双精度浮点型值转换为字符串,转换结果中不包含十进制小数点。...
  • C 语言的浮点型问题

    2017-10-06 22:10:43
    C语言对浮点型的没有加后缀的字面量按照双精度浮点型处理(double),如果将这样一个字面量赋值给一个单精度浮点型变量,可能会出现精度损失。但是无论GCC还是LLVM,在默认情况下都不对这种情况发出告警。如果要想...
  • 整型和浮点型计算

    2020-02-08 20:37:10
    c语言中整型和浮点型混合运算,只能是整型和浮点型同时强制转换为相同的double型(双精度浮点类型)。 如两个float型数参加运算,虽然它们类型相同,但仍要先转成double型再进行运算,结果亦为double型。 int n=1,...
  • C语言】数据的存储数据类型整型在内存中的存储原码、反码、补码 数据类型 在前文《一些初学易犯...double //双精度浮点数——8字节 //c语言无字符串类型 实际上数据类型还分为有符号和无符号两种: char unsig
  • 浮点型变量和字符型变量

    千次阅读 2019-04-18 21:46:04
    今天来说说起浮点型变量和字符型变量 顾名思义,浮点类型变量是用来存储带有小数的实数的。 C语言中有三种不同的浮点类型,以下是对这三种不同类型的声明示例: float Amount; /单精度型/ double; /双精度型/ ...
  • C语言浮点数

    万次阅读 多人点赞 2019-08-03 20:23:07
    浮点数的概念 浮点数也称小数或实数。... C语言中采用float和double关键字来定义小数,float称为单精度浮点型,double称为双精度浮点型,long double更长的双精度浮点型。 在任何区间内(如1.0 到 2...
  • 浮点型的读取方式

    千次阅读 2016-12-22 22:34:15
    C语言中存在两种类型的浮点型,其中一种是单精度的浮点型(float)、双精度浮点型(double)。浮点型数据和一般的整形数据具有较大的差别,具体的差别就是浮点型数据是一个近似值,并不是一个准确的值,这也就是为...
  • MATLAB的数据类型整型和浮点型

    万次阅读 2018-08-08 10:31:53
    前者的整型数据主要为图像处理等特殊的应用问题提供数据类型,而对于一般数值运算,绝大多数是采用双精度浮点型的数据。 8种整数类型: 整数类型 数值类型 转换函数 有符号8...
  • C语言查漏补缺

    千次阅读 2015-03-23 08:25:19
    C语言中非构造类型只有整型(int、short、long、long long和对应的unsigned修饰的类型,以及同义写法),以及浮点型(包括单精度浮点型float,双精度浮点型double,长双精度浮点型long double)两大类。其中float和...
  • 2. 浮点型

    2014-05-11 19:28:00
    2. 浮点型 浮点类型是带有小数点的数据类型,浮点类型可以分为单精度float类型和双精度double类型。一般双精度类型的长度是单精度的两倍,表示的数据更精确。C语言还提供了long double 高精度的数据类型,一般很少...
  • 此文章来源于CU。。   在面试的过程中一般面试官也很少问关于...关于浮点型数据,在C语言中存在两种类型的浮点型,其中一种是单精度的浮点型(float)、双精度浮点型(double)。浮点型数据和一般的整形数据具有较大的
  • C语言关系运算符

    2020-03-25 11:25:52
    C语言中的基本数据类型包括整型、单精度浮点型、双精度浮点型和字符型 整型分为短整型、整型、长整型,每种整型又可分为有符号型和无符号型 单精度浮点型和双精度浮点型变量可以存储实数 字符型变量可以存储单个字符...
  • 第三章 运算符 回顾 常量在程序中不能被更改而变量在程序中可以被更改 C语言中的基本数据类型包括整型单精度浮点型双精度浮点型和字符型 整型分为短整型整型长整型每种整型又可分为有符号型和无符号型 单精度浮点型...
  • 一、C语言中数值型数据分为两大类:整型和浮点型整型:char int short long浮点型:float(单精度) double(双精度) 二、浮点型数据转存到字符串中char str[30]; //定义一个字符数组,来存储数据double d=123.456; //...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 785
精华内容 314
关键字:

c语言双精度浮点型

c语言 订阅