A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

C语言中表示小数的变量有double和float两种类型
其中double8个字节
float4个字节
那么这两者的区别是在精度上的区别还是在范围上的区别
还有就是这两种小数在内存中是怎么存的。求基础好的人解答一下

11 个回复

正序浏览
在精度和范围上都有区别,double的有效值为15位,float的有效值为7位。我也是新手 不知道说的对不对啊
回复 使用道具 举报
,精度都是小数点后6位,float有效数字位7,double有效数字位15
回复 使用道具 举报
%f打印出来后,flioat类型精度小数点后6位这跟double一样,但是有效数字float是7位,double是15位(有效数字包括小数点之前的数字)
回复 使用道具 举报
gamyc 中级黑马 2015-5-18 12:07:31
9#
7楼的讲得很细致啊
回复 使用道具 举报
来看看,学习了。。
回复 使用道具 举报
你问的这个问题涉及到了数的定点和浮点表示方法,这是属于微机原理的内容了,大概给说一下,希望你能看懂,不懂的话就看看微机原理知识。
在计算机中,数有两种表示方法,即定点表示法和浮点表示法。它们的区别是:定点表示法中,小数点位置固定不变;浮点表示法中:小数点是浮动的。
通常,对于任意一个二进制数总可以表示为一个纯整数(或纯小数)和一个2的整数次幂的乘积形式N=2^P*S。 其中,S称为数N的尾数,P称为数N的阶码,2称为阶码的底。此处P、S都是用二进制表示的数。尾数S表示了数N的全部有效数字,阶码P指明了小数点的位置。
1、定点表示法
当阶码为固定值时,这样的数,称为定点数。一般来说,小数点位置固定在哪个位置上并无限制,但为了简便起见,在计算机中有两种定点数是最常用的。
(1)定点纯整数:当P=0,且尾数S为纯整数时,只能表示纯整数,称为定点纯整数。其格式为:       

符号位        尾数S(小数点).
此时,把小数点固定在最低数值位右边,最高位为符号位,小数点本身不占位。
(2)定点纯小数:当P=0,且尾数S为纯小数时,只能表示纯小数,称为定点纯小数。其格式为:
符号位        .(小数点)尾数S
此时,把小数点固定在最高数值位左边,在小数点左边设有一位符号位,小数点本身不占位。
例如,8为二进制数11010100,若是定点纯整数,则其大小为-84;若是定点纯小数,则其大小为-0.65625。
从上例看出,定点纯整数和定点纯小数在格式上毫无差别,这是因为定点数的小数点是隐含的,小数点的位置是由程序员预先设定好的。由于定点数是将小数点的位置固定,这种方法所表示的数范围小,精度低,所以就有了现在的浮点表示法。
2、浮点表示法
如果阶码P不为0,且可在一定的范围内取值,这样表示的数称为浮点数。(为了在位数有限的前提下,尽量扩大数的表示范围,同时又保持数的有效精度,计算机往往采用浮点数表示数值。浮点数是用指数和尾数来表示实数的,由于指数可以选择不同的编码方式,尾数的格式和小数点的位置也可以有不同的约定,因此浮点数的表示方法不是唯一的。目前很多计算机厂家采用的是IEEE标准,IEEE浮点数格式分单精度和双精度两种,单精度为32位,双精度为64位。)
单精度数的指数E用8位表示,偏移量为+127,尾数包括符号位24位,其二进制编码格式为:
S        E1E2......E8        b1b2b3......b23
双精度的指数E用11位表示,偏移量为+1023,尾数包括符号位共53位,其二进制编码格式为:
S        E1E2......E11        b1b2b3......b52
举个例子:
将219.125表示成单精度浮点数?
步骤1:将十进制数化为二进制数:
219.125=11011011.001B
步骤2:将二进制数化为规格化形式:
11011011.001B=1.1011011001*2^7
指数为7,故E=7+127=134=10000110B
步骤3:写出二进制表示的规格化的浮点数形式:
0        1000 0110        1011 0110 0100 0000 0000 000
(这个就是单精度数219.125在内存中的存储形式,共4占个字节,32位)
回复 使用道具 举报
双精度浮点的精确度要高很多
回复 使用道具 举报
俩者在俩个方面都有区别  float精确到小数点6-7位;而double精确到小数点15-16位;double的范围比float大得多
回复 使用道具 举报
楼主,都有区别的,精度上和范围上区别
回复 使用道具 举报
都有区别,我觉得主要还是在精度上
回复 使用道具 举报
范围和精度都有区别啊,虽然打印出来都是默认输出6位小数
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马