单精度和双精度有什么不同?

如题所述

单精度浮点数和双精度浮点数有以下区别:

1、所占的内存不同

单精度浮点数占用4个字节(32位)存储空间来存储一个浮点数,包括符号位1位,阶码8位,尾数23位。

而双精度浮点数使用 8个字节(64位)存储空间来存储一个浮点数,包括符号位1位,阶码11位,尾数52位。

2、所存的数值范围不同

单精度浮点数的数值范围为-3.4E38~3.4E38,而双精度浮点数可以表示的数字的绝对值范围大约是:-2.23E308 ~ 1.79E308。E表示10的多少次方,如3.4E38指的是3.4乘以10的38次方。

3、十进制下的位数不同

单精度浮点数最多有7位十进制有效数字,如果某个数的有效数字位数超过7位,当把它定义为单精度变量时,超出的部分会自动四舍五入。

双精度浮点数可以表示十进制的15或16位有效数字,超出的部分也会自动四舍五入。

参考资料来源:百度百科-单精度浮点数

参考资料来源:百度百科-双精度浮点数

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2019-08-21

1,单精度,也就是 float ,在 32 位机器上用 4 个字节来存储的;而双精度double是用 8 个字节来存储的,这是他们最本质的区别。 

2,由于存储位不同,他们能表示的数值的范围就不同,也就是能准确表示的数的位数就不同。

3,单精度小数点后面共能精确到7位小数。双精度可精确到15位小数。

扩展资料:

单精度浮点数用4字节存储,双精度浮点数用8字节存储,分为三个部分:符号位、阶和尾数。阶即指数,尾数即有效小数位数。单精度格式阶占8位,尾数占24位,符号位1位,双精度则为11为阶,53位尾数和1位符号位。

细心的人会发现,单双精度各部分所占字节数量比实际存储格式多了一位,的确是这样,事实是,尾数部分包括了一位隐藏位,允许只存储23位就可以表示24位尾数,默认的1位是规格化浮点数的第一位,当规格化一个浮点数时,总是调整它使其值大于等于1而小于2,亦即个位总是为1。

阶以移码的形式存储。对于单精度浮点数,偏移量为127(7FH),而双精度的偏移量为1023(3FFH)。存储浮点数的阶码之前,偏移量要先加到阶码上,浮点数有两个例外。数0.0存储为全零。无限大数的阶码存储为全1,尾数部分全零。符号位指示正无穷或者负无穷。

参考资料:百度百科-单精数

百度百科-双精度浮点数

本回答被网友采纳
第2个回答  推荐于2019-10-11

区别如下:

1、单精度和双精度的字节数不同。前者占4个字节;后者占8个字节。

2、单精度和双精度有效数字位数不同。前者为8位;后者为16位。

3、单精度和双精度表示的数的范围不同。前者的数值范围在-3.40E+38 到 +3.40E+38之间;后者的范围为-1.79E+308到+1.79E+308之间。

4、单精度和双精度处理的速度不同。前者的速度更加的快。


本回答被网友采纳
第3个回答  推荐于2017-12-16
1、单精度,也就是 float ,在 32 位机器上用 4 个字节来存储的;而双精度double是用 8 个字节来存储的,这是他们最本质的区别。 2、由于存储位不同,他们能表示的数值的范围就不同,也就是能准确表示的数的位数就不同。本回答被网友采纳
第4个回答  2013-06-27
单精度和双精度都属浮点数,一个单精度浮点数占4个字节(32位),一个双精度浮点数占8个字节(64位),所以双精度浮点数所能表示的数字范围比单精度大得多,编写时应注意到自己要用到的数字是否超出了单精度所能表示的范围,还有很重要一点:单精度和双精度在计算机中的表示格式虽一样,但由于位数不同,应注意数值的传递是否发生了类型的转换,否则很容易出现问题。
相似回答