float和double究竟有什么区别?



------
rt
------
double、float都是浮点型,
double(双精度型)比float(单精度型)存的数据更准确些,占的空间也更大。
------
double精度是float的两倍,所以需要更精确的计算常使用double
------
单精度浮点数在机内占4个字节,用32位二进制描述。
双精度浮点数在机内占8个字节,用64位二进制描述。

浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。
数符占1位二进制,表示数的正负。
指数符占1位二进制,表示指数的正负。
尾数表示浮点数有效数字,0.xxxxxxx,但不存开头的0和点
指数存指数的有效数字。

指数占多少位,尾数占多少位,由计算机系统决定。
可能是数符加尾数占24位,指数符加指数占8位 -- float.
数符加尾数占48位,指数符加指数占16位 -- double.

知道了这四部分的占位,按二进制估计大小范围,再换算为十进制,就是你想知道的数值范围。

对编程人员来说,double 和 float 的区别是double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多,C语言中数学函数名称double 和 float不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)。
------
ls讲解很详细!!受益了!!多谢~~!
------
double(双精度型)比float(单精度型)存的数据更准确些,占的空间也更大。
------
简单来说就是数据长度不一样 可以用sizeof()看一下
------
不同的平台
对于 float double
的定义有所区别
使用前一定要先测试自己的平台是如何处理的

对于很多平台来说
两者是相同的

如果要考虑移植
还需要一些考虑
------
精度不同,所占空间大小不同。
------
看平台,有的是相同的。。
------
计算时,float类型自动提升为double
------
简单来说,就是double精度高,float精度低。
强烈建议使用double,永远不要碰float,这样你的程序将不会在数据精度问题上出现错误。
------
最好用double,效率和空间不是问题。
------
int型不能自动在转化成float,但是可以转化成double
因为float 和double之间是单向转化
------
引用 3 楼 wuyu637 的回复:
单精度浮点数在机内占4个字节,用32位二进制描述。
双精度浮点数在机内占8个字节,用64位二进制描述。

浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。
数符占1位二进制,表示数的正负。
指数符占1位二进制,表示指数的正负。
尾数表示浮点数有效数字,0.xxxxxxx,但不存开头的0和点
指数存指数的有效数字。

指数占多少位,尾数占多少位,由计算机系统决定。
可能是数符加尾数占24位,指数符加…

------
引用 3 楼 wuyu637 的回复:
单精度浮点数在机内占4个字节,用32位二进制描述。
双精度浮点数在机内占8个字节,用64位二进制描述。

浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。
数符占1位二进制,表示数的正负。
指数符占1位二进制,表示指数的正负。
尾数表示浮点数有效数字,0.xxxxxxx,但不存开头的0和点
指数存指数的有效数字。

指数占多少位,尾数占多少位,由计算机系统决定。
可能是数符加尾数占24位,…

------
浮点数一般分为3部分吧,符号,指数,尾数 
float在32位系统中分别占1位 8位 23位 V = (-1)^S×M×2^(E-127)
------
同意楼上几位的,在目前的硬件环境下,最好都用double。嵌入式除外。
而且如果有跨平台的要求,建议测试一下再用
------
精度不同,占用空间不同。
------
引用 3 楼 wuyu637 的回复:
单精度浮点数在机内占4个字节,用32位二进制描述。
双精度浮点数在机内占8个字节,用64位二进制描述。

浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。
数符占1位二进制,表示数的正负。
指数符占1位二进制,表示指数的正负。
尾数表示浮点数有效数字,0.xxxxxxx,但不存开头的0和点
指数存指数的有效数字。

指数占多少位,尾数占多少位,由计算机系统决定。
可能是数符加尾数占24位,指数符加…

------
这谁推荐的……
------
长度不同
------
这么说,精度低的东西速度还慢,跳楼呀

还要float干嘛?


32位的cpu,计算一个8字节的double,要分2次放入寄存器吧?
跟float 有得比?搞不懂
------
引用 23 楼 cyblueboy83 的回复:
这么说,精度低的东西速度还慢,跳楼呀

还要float干嘛?


32位的cpu,计算一个8字节的double,要分2次放入寄存器吧?
跟float 有得比?搞不懂

------
位数不同
------
引用 3 楼 wuyu637 的回复:
单精度浮点数在机内占4个字节,用32位二进制描述。
双精度浮点数在机内占8个字节,用64位二进制描述。

浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。
数符占1位二进制,表示数的正负。
指数符占1位二进制,表示指数的正负。
尾数表示浮点数有效数字,0.xxxxxxx,但不存开头的0和点
指数存指数的有效数字。

指数占多少位,尾数占多少位,由计算机系统决定。
可能是数符加尾数占24位,…

------
float是单精度浮点型,而double是双精度浮点型,二者在机器内所占字节数不一样,精确度也不一样,double型精度更高些!
------
float是单精度浮点型,而double是双精度浮点型,二者在机器内所占字节数不一样,精确度也不一样,double型精度更高些!
------
up
------
这样的题目这么多人在,人气很旺啊!
大家把IEEE的规格拿出来,将浮点数据的存储,运算……都摆出来
------
还要看应用场景,浮点数计算很大程度是应用于DSP应用,比如视频流的压缩处理,在算法协议里都会给出浮点运算所需的精度要求,精度越高,在信号变换过程中,信息量的损失就越少。
关于float和double运算的快慢问题,不可简单一概而论,主要看硬件是否支持,通用CPU 对于浮点运算一般都不咋的,除非有些CPU支持特殊的多媒体指令,比如X86的SSE指令,因此常常通用CPU会加浮点协处理器存在,比如ARM11JFS就是ARM11的多媒体增强型号,增加了高速浮点协处理器模块VFP,支持double 和 float运算的加速。那这样double和float的运算速度就都很快。但是要使使用普通型CPU,那无论double 和 float的运算都会比较慢,估计有上百数量级的差距。
------
精确度不同,double更高
------
double用更多的空间,得到更高的精度
一般float够用了
------
引用 17 楼 yangyunzhao 的回复:
同意楼上几位的,在目前的硬件环境下,最好都用double。嵌入式除外。
而且如果有跨平台的要求,建议测试一下再用

------
现在的PC的内存和速度都不是问题了,用double的吧
------
引用 3 楼 wuyu637 的回复:
单精度浮点数在机内占4个字节,用32位二进制描述。
双精度浮点数在机内占8个字节,用64位二进制描述。

浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。
数符占1位二进制,表示数的正负。
指数符占1位二进制,表示指数的正负。
尾数表示浮点数有效数字,0.xxxxxxx,但不存开头的0和点
指数存指数的有效数字。

指数占多少位,尾数占多少位,由计算机系统决定。
可能是数符加尾数占24位,指数符加…

------
精度不同
------
跟以前.net版的一个Int16和Int32的问题类似
Int16就比Int32的慢,因为在32位机上,Int16要转换成Int32进行运算。
------
引用 38 楼 youbl 的回复:
跟以前.net版的一个Int16和Int32的问题类似
Int16就比Int32的慢,因为在32位机上,Int16要转换成Int32进行运算。

------
meiyiyidddddd
------
ding
------
精度不一样,有效数字的个数不一样

------
float是单精度型,double是双精度型
都是浮点数
貌似只有编程要求的时候才会特别区分
好吧。。我说的是在读大学生做C语言课程设计是这样的
------
单精度浮点数在机内占4个字节,用32位二进制描述。 
双精度浮点数在机内占8个字节,用64位二进制描述
------
.
------
数据长度不一样,占用的空间不一样,精度双精度更高一些
------
单精度浮点数在机内占4个字节,用32位二进制描述。 
双精度浮点数在机内占8个字节,用64位二进制描述。 

浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。 
数符占1位二进制,表示数的正负。 
指数符占1位二进制,表示指数的正负。 
尾数表示浮点数有效数字,0.xxxxxxx,但不存开头的0和点 
指数存指数的有效数字。 

指数占多少位,尾数占多少位,由计算机系统决定。 
可能是数符加尾数占24位,指数符加…
------
平台也是一个考虑因数
------
这都能够推荐啊。。。 。。。
------



居然是晨星老大推荐的,老大出来发表一下言论。
------
up
------
三楼正解
------
越是基础的越是难啊!
------
据说游戏编程中推荐用float
好像是显卡的GPU的…………(记不清了)
没考证过
------
float 和 double 哪个优势更多些?
------
呵呵,基础的知识更值得学习啊。。。
------
还是没有讲明白为什么DOUBLE比FLOAT要快,期待中
------
一 float存储的字节数是4个字节 double是8个字节。在不需要很高精度的情况下,float比较实用(节省空间)。
二 float提供7位有效数字位,而double提供15位有效数字位。

但是在编译float ftemp=0.1; 会弹出一个警告:truncation from 'const double' to 'float',编译器自动把0.1看做double类型。VC6.0



------
謝謝
------
如此多的热心人
------
引用 59 楼 fiyaa 的回复:
还是没有讲明白为什么DOUBLE比FLOAT要快,期待中

------
学习
------
学习!
------
double 精度高
------
double的精度更高一些
------
类型说明符 比特数(字节数) 有效数字 数的范围
float 32(4) 6~7 10-37~1038  
double 64(8) 15~16 10-307~10308 
long double 128(16) 18~19 10-4931~104932 

------
每天回帖即可获得10分可用分!
------
float是单精度型,double是双精度型
------
相互联系,又相互区别。
------
精度不同,所占的空间也不一样,具体的你可以写个程序测试下就知道了
------
简单来说就是数据长度不一样 可以用sizeof()看一下 
 

------
float是单精度类型,dobule是双精度类型。
------
主要就是精度不同,所占空间不同,你用sizeof()试一下就知道了
------
mark~
------
mark~
------
精度的区别
------
引用 2 楼 lingyin55 的回复:
double精度是float的两倍,所以需要更精确的计算常使用double

------
引用 59 楼 fiyaa 的回复:
还是没有讲明白为什么DOUBLE比FLOAT要快,期待中

------
只知道在java中float是要转换成double来计算的,其他就不知道了

------
学习了
------
精确度的问题,float是8位,double是16位
------
引用 38 楼 youbl 的回复:
值得争论么?IEEE把FLOAT和DOUBLE已经说得很明白了。
C系语言和JAVA都是按照IEEE标准的。
那些贴推荐有何意义??何况这还是在C版……

------
float 占4个字节,而Double占8字节
------
一般直接用double
------
就是精度不一样哇
------
用的空间不一样,表示长度不一样,精度不一样

还有名字不一样(不要拍我阿)
------
内存中所占位数不同
double是2*float的长度
你用sizeof(double);
sizeof(float);
就可以看出来了
------
引用 3 楼 wuyu637 的回复:
单精度浮点数在机内占4个字节,用32位二进制描述。
双精度浮点数在机内占8个字节,用64位二进制描述。

浮点数在机内用指数型式表示,分解为:数符,尾数,指数符,指数四部分。
数符占1位二进制,表示数的正负。
指数符占1位二进制,表示指数的正负。
尾数表示浮点数有效数字,0.xxxxxxx,但不存开头的0和点
指数存指数的有效数字。

指数占多少位,尾数占多少位,由计算机系统决定。
可能是数符加尾数占24位,指数符加指数占8位 -- float.
数符加尾数占48位,指数符加指数占16位 -- double.

知道了这四部分的占位,按二进制估计大小范围,再换算为十进制,就是你想知道的数值范围。

对编程人员来说,double 和 float 的区别是double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多,C语言中数学函数名称double 和 float不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)。

------
pass
learn
------
float为单精度,比特数32,有效数字6~7,数值范围10的负37次方到10的38次方;
double为双精度,比特数64,有效数字15~16,数字范围10的负307次方到10的308次方;
请给我分数把,本人第一次回答问题[b][/b]
------
学习了.
------
我也顶下吧,这么热闹
------
学习
------
精度不同,长度不同
------
看具体的编译器
------
编译成汇编后还有什么

1.整数运算部件模拟
2.用浮点部件直接算



------
类型 比特数(字节数) 有效数字 数的范围 
float 32(4) 6~7 -3.4e-38——3.4e38
double 64(8) 15~16 -1.7e-308-1.7e308
long double 128(16) 18~19 -1.2e-4932-1.2e4932


在TurboC中。
------
double 和 float 的区别是double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多,但是建议用double精度高
桂ICP备07017180号