单精度和双精度有啥不同?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单精度和双精度有啥不同?相关的知识,希望对你有一定的参考价值。
单精度浮点数和双精度浮点数有以下区别:
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位有效数字,超出的部分也会自动四舍五入。
参考资料来源:百度百科-单精度浮点数
参考资料来源:百度百科-双精度浮点数
参考技术A1,单精度,也就是 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,尾数部分全零。符号位指示正无穷或者负无穷。
参考资料:百度百科-单精数
百度百科-双精度浮点数
参考技术B区别如下:
1、单精度和双精度的字节数不同。前者占4个字节;后者占8个字节。
2、单精度和双精度有效数字位数不同。前者为8位;后者为16位。
3、单精度和双精度表示的数的范围不同。前者的数值范围在-3.40E+38 到 +3.40E+38之间;后者的范围为-1.79E+308到+1.79E+308之间。
4、单精度和双精度处理的速度不同。前者的速度更加的快。
单精度和双精度浮点值有啥不同? [复制]
【中文标题】单精度和双精度浮点值有啥不同? [复制]【英文标题】:What's different between a single precision and double precision floating values? [duplicate]单精度和双精度浮点值有什么不同? [复制] 【发布时间】:2020-05-28 12:27:43 【问题描述】:单精度和双精度浮点值有什么区别?
【问题讨论】:
您是否先尝试了一些搜索? 错误...精度。更具体地说,单精度和双精度分别约为 6 位有效十进制数字与 15 位。 【参考方案1】:在 C 语言中,double
的精度至少与float
一样高,通常高于float
,并且至少具有float
的指数范围,通常高于float
。
C 标准只要求double
能够表示float
的所有值:“float
类型的值集是double
类型的值集的子集…… ”(C 3028 6.2.5 10)。
在当今典型的常见实现中,float
在IEEE-754 binary32 格式中用 32 位表示,double
在 binary64 格式中用 64 位表示> 格式。
【讨论】:
【参考方案2】:单精度(浮点数)存储在 4 个字节(32 位)中。 双精度(double)以 8 个字节(64 位)存储。
【讨论】:
以上是关于单精度和双精度有啥不同?的主要内容,如果未能解决你的问题,请参考以下文章