首页 > 试题广场 >

C++中32位单精度浮点数能表示的十进制有效数字是多少位?(

[单选题]
C++中32位单精度浮点数能表示的十进制有效数字是多少位?()
  • 9
  • 6
  • 7
  • 8
  1. 一个浮点数由三部分组成:符号位S、指数部分E(阶码)以及尾数部分M。

  2. 单精度浮点数(float)总共用32位来表示浮点数,其中尾数用23位存储,加上小数点前有一位隐藏的1(IEEE754规约数表示法),2^(23+1) = 16777216。因为 10^7 < 16777216 < 10^8,所以说单精度浮点数的有效位数是7位。考虑到第7位可能的四舍五入问题,所以单精度最少有6位有效数字(最小尺寸)。 

  3. 同样地:双精度浮点数(double)总共用64位来表示浮点数,其中尾数用52位存储,     2^(52+1) = 9007199254740992,10^16 < 9007199254740992 < 10^17,所以双精度的有效位数是16位。同样四舍五入,最少15位。
发表于 2016-05-04 15:26:48 回复(7)
单精度浮点数的有效位数是7位。
双精度浮点数的有效位数是16位。
发表于 2016-05-30 09:23:21 回复(0)
单7双16
发表于 2016-08-10 15:24:23 回复(4)


科学计数法,尾数被称为有效数字。如, 0.00012 -> 1.2x10有效位两位
单精度float:log2(23+1)=7.22 (23+1:指的是单精度的尾数位23+小数点前1位(不存储,如1.2x10的1))
双精度double:log2(52+1)=15.95
发表于 2019-07-21 15:36:48 回复(0)
单精度浮点数的有效位数是7位。
双精度浮点数的有效位数是16位。
单精度最少有6位有效数字(最小尺寸)。
双精度的有效位数最少15位
发表于 2018-03-28 15:28:26 回复(0)
float 7 double 16 long double 18
发表于 2022-11-22 13:14:47 回复(1)

在计算机中,浮点数是以二进制形式存储的。在单精度浮点数中,一共有32个二进制位,其中最高的1位是符号位(0表示正数,1表示负数),接下来的8位是指数部分,剩下的23位是尾数部分。因为指数部分是带符号的,所以它可以表示的范围是-126到+127,但是真实的指数不是直接用这个8位的二进制数来表示的,而是通过将这个二进制数加上一个偏置量127来得到的,所以实际的指数范围是-126+127 = -1到+127+127 = 254。而尾数部分的23个二进制位可以表示2^23个不同的数,也就是2的23次方个数。这些数的大小和精度都不相同,但是它们之间的差距通常都很大。

简单地说,指数部分用于表示该浮点数的数量级(或者说大小),尾数部分则用于表示该浮点数的精度(或者说小数位数)。由于指数部分和尾数部分所占用的二进制位数都是有限的,因此单精度浮点数最多可以表示23位的二进制精度。将23位的二进制精度转换为十进制,则其有效数字大约为7位左右,这代表着单精度浮点数能够准确表达出来的最长小数位数为7。
单精度浮点数的有效数字位数大约在69到92位的范围内。这个范围也可以近似地看作是7位左右的有效数字。
发表于 2023-10-17 15:42:20 回复(0)
难道整数部分不算有效数字的么
发表于 2017-06-09 22:12:55 回复(0)

【float】

用32位来表示浮点数

小数点前隐藏的1+尾数23位

10^7 < 2^(1+23) < 10^8

所以单精度浮点数的有效位数是7位

考虑到第7位可能四舍五入,最少6位


【double】

用64位表示浮点数

小数点前隐藏的1+尾数52位

10^16 < 2^(1+52) < 10^17

所以有效位数16位,最少15位

编辑于 2020-03-20 15:34:22 回复(0)
不是很懂这种题的意义
发表于 2023-02-22 14:38:57 回复(0)
单精度7位,双精度16位
发表于 2022-06-17 08:45:56 回复(0)
这东西也要记?浮点数就够难的了
发表于 2022-02-26 09:47:40 回复(0)
一般来说,类型float和double分别有7和16个有效为。
发表于 2020-02-08 12:41:16 回复(0)
单7双16
发表于 2018-12-26 20:45:43 回复(0)
单精度浮点数的有效位数是7位。 双精度浮点数的有效位数是16位。
发表于 2018-09-02 14:50:20 回复(0)
单精度有效数字为7位(共32位),双精度16位(共64位)
发表于 2018-07-09 19:38:31 回复(0)
十进制数:123456789。若有效位数为6,则123456是准确的,789是不准确的;float的范围为-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38
编辑于 2018-04-11 21:05:33 回复(0)
***吧,***明明选的8,提交后变成7
发表于 2018-01-26 12:30:07 回复(0)

32位单精度

单精度二进制小数,使用32位存储。
1 8 23 位长
+-+--------+-----------------------+
|S| Exp | Fraction |
+-+--------+-----------------------+
31 30 23 22 0 位编号 (从右边开始为0)
偏正值 +127

64位双精度

双精度二进制小数,使用64位存储。
1 11 52 位长
+-+--------+-----------------------+
|S| Exp | Fraction |
+-+--------+-----------------------+
63 62 52 51 0 位编号 (从右边开始为0)
偏正值 +1023
发表于 2018-01-07 16:34:14 回复(0)