在c++中单精度float类型与双精度double类型的问题

有句话不太明白:
【"单精度用float表示,在计算机中使用4位字节(32位bit)来表示,具有7位有效数字"】
既然是用4位字节表示float,那么不是应该是4位有效数吗,一个数字不是占用一个字节吗 ?
1.124545 这个数占几个字节呢?
1124545又占多少字节?

float占4个字节(32个bit位),这句话的意思是一个单精度的浮点数在内存当中占用了32个bit位,按照浮点数的表示标准,最高位表示符号,这32位一部分用来表示阶码,一部分用来表示小数部分。按照这个表示方法转化成10进制之后,它能表示的最高精度是7位有效数字。建议楼主先看看这个
http://wenku.baidu.com/view/4fa68320aaea998fcc220e79.html
对于你的补充问题,如果你用float类型来存这个数,那它就占4个字节,如果你用double类型来存这个数,它就占8个字节。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-09-21
float类型存储的时候1个bit是符号位,8个bit是指数位,剩下的23个bit是有效数字位,2的23次方你算一下是多少?
我看过一老外写的书,说是现在内存很大很便宜啦,尽量用double,不用节省存储空间,大多数情况下用double比用float速度快本回答被提问者采纳
第2个回答  2012-04-25
float n1=1.124545
float n2=1124545
float n3=0

他们在内存里都是4Byte 32位。
只不过
float n1=1.124545123456767;
这样写是没有用的。还是 n1=1.124545
精度不够了。
文章这里的7位有效数字指的是十进制的人类世界数字。
第3个回答  2012-04-25
4个字节(byte),一个字节是8位(bit),计算机中数据都是以二进制的形式存在,比如11100011就是8位(bit),占1个字节(byte).float和double类型的数据,存储方式跟int是不一样的。比如
float a=3.14159;a在内存中实际上表示为0.314159乘以10的1次方,而分配给a的存储单元就分为两部分,一部分存0.314159,一部分存指数1,而且也都是转化为2进制来存,所以说,有效数字,不是你想的那样。明白了吗? 所需要的存储空间,由你声明的数据的数据类型来决定。

单精度float和双精度double的问题
第一:在c++里,小数形式,如果末尾没有f则默认是double型的。第二:浮点数存储是不精确的。就是存在截断。第一次a是float型的,有32位,但是在做减法的时候,升级成double型的,这样后面的32位默认为o,之后在做减法不会改变应该有的循环次数。第二个程序a是double型的,64位中都是相应的数字。...

在C++中,单精度浮点型(float)和双精度浮点型(double)有何异同?_百度知 ...
double能表示的精度大,但占内存也大 float表示的精度小些,但内存占的少,如果你不需要很高精度,建议用float

C语言 double;float输出精度问题求解
在C\/C++中,浮点型float用32位二进制表示,十进制有效数位为7位;double用64位二进制表示,十进制有效数位为16位。值得注意的是,无论 float还是double型,在机内都是按double运算的,区别只在输出时的有效位数不同。当一个数的实际长度不足要求的位数时,计算机会自动补足——但通常是一个随机数而...

在c语言中,单精度浮点数与双精度浮点数的区别与联系。
在C语言中,单精度浮点数(float)和双精度浮点数(double)类型都是用来储存实数的,双精度是用记忆较多,有效数字较多,数值范围较大。两种类型对应的格式字符也有不同。 以Turbo C 为例: float 单精度浮点数使用记忆:4 字符(32 位元)有效数字:6-7 位数值范围:??3.4e38 至 ??3.4e??38...

c++中的double类型的精度问题怎么解决?
这本来就是近似的,要精度高就把π取精确点。acos(0)\/3.14159265358979*180应该是90.000000°了。include "stdio.h"#include "math.h"int main(int argv,char *argc[]){printf("%f\\n",acos(0)\/3.14159265358979*180);return 0;}运行结果:...

c++中单精度浮点跟双精度浮点怎么区分
当表中需要存储精度较高、位数固定的数值或者存储真正的浮点数值时请使用双精度型数据代替数值型数据 单精度浮点型是为了提供兼容性,浮点数据类型在功能上等价于数值型。 追问: 套用这题,如果double改成float行不行 回答: float是16位,double32位,没超过16位就可以用float ...

在C++语言中,浮点数的精度有什么区别?比如double和float。双精度和单...
double是64位,占8字节,float32位,占4字节,所以double的精度比float高 在一个浮点数里,由阶码和尾数2部分表示,与科学计数法类似,但是它的阶不是10,而是2,也就是说浮点数的表示是 尾数*2^阶码 阶码决定了浮点数的范围,尾数决定了浮点数的精度,尾数是永远在0~1之间的,假设一个浮点数的尾数是...

请问c++中double和float有什么区别?啥时候该用double,啥时候该用float...
float 单精度浮点数,小数部分6到7位,共占内存4个字节。double双精度浮点数,小数部分13到15位,共占8个字节。所以double型能表示的范围比float型的大得多,具体各能表示多大范围的数字,我也记不清,自己上网查查。如果你觉得你用的数字可能很大,或者对小数部分要求的保留精度较高,就用double型,...

求大神给说下c++中的double和float类型
因为float存的是近似值,所以,当达到一定程度后,i和i+1的近似值会相同。所以,i ++做了等于没做,于是导致死循环 这个是对实型变量操作时一定要注意的一点 接下来是复制的 C\/C++中, 浮点数,float以及 double 在内存中是怎样存储的?假如,我有32-bit 8bit 8bit 8bit 0 0 0 0...

...c++ 问题 求float与double区别 别说什么单双精度,说点实际什么时候用...
这里不同的编译器会有不同的处理方法!你所用的编译器大概进行了清零操作!所以你把读取方式改为%lf就可以了 %lf你可以理解为long float 这样就会正常读入了! 实际上double和float最大的区别就是所用的字节长度不同,也就是说当你需要用到的数据可能较大时可以用double 较小时用float就够了!

相似回答