C++ double 类型范围为什么那么大
答案:5 悬赏:40
解决时间 2021-03-29 07:22
- 提问者网友:捧腹剧
- 2021-03-28 13:24
C++ double 类型范围为什么那么大
最佳答案
- 二级知识专家网友:荒野風
- 2021-03-28 14:16
它表示大数的代价就是损失了精度.打个比方,我有0-9这10个数,我定义数n表示5n,那么这10个数最大能表示45,但41,42这些不是5的倍数的数就没法精确表示了,只能在定义中把它们靠向40或者45.这就是为了扩大表示范围而损失了表示精度.
全部回答
- 1楼网友:长青诗
- 2021-03-28 18:15
范围与真正范围内数值的个数,是不一样的。
- 2楼网友:胯下狙击手
- 2021-03-28 17:12
因为它不是每个数都能表示
它是分为2大块存放
一块存放有效数字(包括小数点)
一块存放 次方数
这样存放的
不是挨个存放
太精细的数字是显示不了的
double有效数字位数一般在14-16左右
它是分为2大块存放
一块存放有效数字(包括小数点)
一块存放 次方数
这样存放的
不是挨个存放
太精细的数字是显示不了的
double有效数字位数一般在14-16左右
- 3楼网友:鱼忧
- 2021-03-28 15:48
float和double的范围是由指数的位数来决定的。
float的指数位有8位,而double的指数位有11位,分布如下:
float:
1bit(符号位)
8bits(指数位)
23bits(尾数位)
double:
1bit(符号位)
11bits(指数位)
52bits(尾数位)
于是,float的指数范围为-128~127,而double的指数范围为-1024~1023,并且指数位是按补码的形式来划分的。其中负指数决定了浮点数所能表达的绝对值最小的数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。
float的范围为-2^128 ~ +2^127,也即-3.40E+38 ~ +3.40E+38;double的范围为-2^1024 ~ +2^1023,也即-1.79E+308 ~ +1.79E+308。
float的指数位有8位,而double的指数位有11位,分布如下:
float:
1bit(符号位)
8bits(指数位)
23bits(尾数位)
double:
1bit(符号位)
11bits(指数位)
52bits(尾数位)
于是,float的指数范围为-128~127,而double的指数范围为-1024~1023,并且指数位是按补码的形式来划分的。其中负指数决定了浮点数所能表达的绝对值最小的数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。
float的范围为-2^128 ~ +2^127,也即-3.40E+38 ~ +3.40E+38;double的范围为-2^1024 ~ +2^1023,也即-1.79E+308 ~ +1.79E+308。
- 4楼网友:人類模型
- 2021-03-28 14:49
1、因为double类型是浮点数,这种类型可以用科学记数法表示,所以表示范围非常大。
但是,使用可浮点数的代价就是损失了精度。它把这部分精度用于指数的表示。所以double类型的优点就是数据范围大,缺点是精度不足,大概只有15~16位有效位数。
2、浮点数类型及其数值范围:
类型比特数 有效数字数值范围
float 类型 326-7-3.4*10(-38)~3.4*10(38)
double类型6415-16-1.7*10(-308)~1.7*10(308)
long double类型 128 18-19 -1.2*10(-4932)~1.2*10(4932)
但是,使用可浮点数的代价就是损失了精度。它把这部分精度用于指数的表示。所以double类型的优点就是数据范围大,缺点是精度不足,大概只有15~16位有效位数。
2、浮点数类型及其数值范围:
类型比特数 有效数字数值范围
float 类型 326-7-3.4*10(-38)~3.4*10(38)
double类型6415-16-1.7*10(-308)~1.7*10(308)
long double类型 128 18-19 -1.2*10(-4932)~1.2*10(4932)
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯