C语言中,双精度(double)型其数值范围为1.7E-308~1.7E+308,这里面的E是什么意思啊?
3月21日补充:
阶码为0X3FF + 真实指数
所以最大的只能是0X7FF,但是0X7FF被当作溢出了,所以最大是0X7FE
也就是1023,最小的就是-1023
后面讲解中的阶码最大为1024是错的!
应该是这样
尾数约等于1,再加上一个默认的1 就是约等于2 ,于是最大的数就是约2*2^1023 = 2^1024 得那个数
下面的程序将说明问题
#include
using namespace std;
union
{
struct
{
int a;
int b;
} i;
double d;
} num;
void main( )
{
num.i.a = 0xffffffff;
num.i.b = 0x7fefffff;//double最大的数
cout<<num.d<<endl;
}
符号位1位,阶码11位,尾数52位
当然最大数就是
符号位 正数
阶码 11位,最大的是 100 0000 0000 (1024 ,表示的指数范围是-1023到1024,所以最大的是这个了)
而2^1024 约 1.79e308
尾数是有效数字
上面的最大的为 100 0000 0000是错的
应该是0x7fe 表示:2的0x3ff次方 (0x7ff表示2的0x400方,但是有特殊含义,所以最大的是2的0x3ff次方)
-----------------------
一般机器规定,若基为2并用补码表示尾数,则规格化数的标志为:“尾数的符号位和数值部分最高位具有不同的代码”。
为了最大限度提高精度,尾数采用规格化形式,既1/2≤M<1。采用二进制表示时,若尾数大于零,则规格化数应该是01XXXX的形式;若尾数小于零,则规格化数应为10XXXX的形式。
-----------------------
也是有问题的,那个不是标准的
"为便于软件的移植,浮点数的表示格式应该有统一标准。1985年IEEE(Institute of Electrical and Electronics Engineers)提出了IEEE754标准。该标准规定基数为2,阶码E用移码表示,尾数M用原码表示,根据原码的规格化方法,最高数字位总是1,该标准将这个1缺省存储,使得尾数表示范围比实际存储的一位"
所以尾数的真值就是0.????尾数(二进制的,比如0.1就是十进制0.5) 再加上 1
所以上面程序中的意思就是
一个趋于1的数(0.ffffffffffff + 1) * 2^1023 约 2^1024
所以最大的是那么多了.......
而负数则同理
单精度和双精度最大区别就是结果精确到第几位。
单精度是这样的格式,1位符号,8位指数,23位小数。
双精度是1位符号,11位指数,52位小数。
1.7E-308 是 1.7 乘以 10的负308次方
1.7E+308 是 1.7 乘以 10的308次方
E是科学计数法的符号。
1.7E-308意思是1.7乘以10的-308次幂
1.7E+308意思是1.7乘以10的+308次幂
相当于数学中的指数
在c语言中% d是什么意思?
d 表示有符号十进制整数, %c 表示字符。这一类符号是“格式说明”用于格式输入与格式输出,就是我们常见的printf和scanf函数中在输入输出时,对不同类型的数据(如int,float,char等)要使用不同的格式说明。其中%d,用来输出十进制整数%f,用来输出实数(包括单,双精度),以小数形式输出%c,用来输出一...
双精度型数据中的“D”是啥意思
double float 应该是double吧
C语言的双精度问题
对于浮点数字面值常量,无特殊说明默认为双精度,如:1.23 也可以显式地在后面加上一个D来表示这是一个双精度数,即1.23D 如果要表示单精度常量,需要显式地在后面加上一个F,即1.23F。
c语言单双精度的定义与输出的区别?
对于float 和double类型,在输出时,使用%f与%lf的效果是完全相同的,可以不加区分地使用。但是在输入时,必须严格区分使用,float使用%f进行输入,而double则%lf进行输入。否则就会读取错误。
vb中单精度和双精度有什么不同,是什么意思呢?
取值范围:负数 -3.402823E+38 ~ -1.401298E-45 正数 1.401298E-45 ~ 3.402823E+38 【双精度数】(Double,类型符#)Double类型数据在内存中占用8个字节(64位)Double型可以精确到15或16位十进制数,即15或16位有效数字。取值范围:负数: –1.797693134862316D+308 ~ -4.94065D-324 正...
双精度浮点数在C语言中是什么意思?
双精度浮点数是C语言的基本类型之一,关键字为double。每个double类型数字占8个字节。其使用方式如下:1 定义:double d;2 赋值:d = 1.3;3 输入:scanf("%lf",&d);4 输出:printf("%lf",d);用于格式化输入输出时,double 的格式化字符串为%lf。
printf函数中% d、% f是什么意思?
1、%d,d格式字符。用来输出十进制整数,按整型数据的实际长度输出。2、 %f ,用来输出实数(包括单双精度),以小数形式输出。C语言中对于不同类型的数据用不同的格式字符,这两个都是printf函数格式字符。
c语言中d=(c,d=c)是什么意思
d 表示有符号十进制整数, %c 表示字符。这一类符号是“格式说明”用于格式输入与格式输出,就是我们常见的printf和scanf函数中在输入输出时,对不同类型的数据(如int,float,char等)要使用不同的格式说明。其中%d,用来输出十进制整数%f,用来输出实数(包括单,双精度),以小数形式输出%c,用来输出一...
在c语言中,单精度浮点数与双精度浮点数的区别与联系。
在C语言中,单精度浮点数(float)和双精度浮点数(double)类型都是用来储存实数的,双精度是用记忆较多,有效数字较多,数值范围较大。两种类型对应的格式字符也有不同。 以Turbo C 为例: float 单精度浮点数使用记忆:4 字符(32 位元)有效数字:6-7 位数值范围:�6�13.4...
C语言输出% d是什么意思?
d:输出的是整形字符 \/n:换行符,即输出结果需要换行 d和%d\/n的区别就在于,%d下一次的输入会紧接着本次的输出内容后,而%d\/n下一次的输出会换行,在下一行的显示。例如:int a=6;b=7;print("%d\/n,%d",a,b)输出:6 7
吁查特福: c语言中 单精度型和双精度型 指两种 类型 的 浮点数. 单精度型 即 float 型, 有效数字约10进制7位 双精度型 即 double 型, 有效数字约10进制15位 所以能描述的数值精度不同. c语言 数据 用 IEEE 754 国际标准.float 型 用 4 字节存放,...
独山县13464313829: c语言中的双精度浮点型是什么意思? - ?
吁查特福: C语言中,双精度(double)型占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308,可提供16位有效数字. 浮点型说白了就是科学记数法 双精度,即 double . C 标准要求 float 类型至少要能精确表示到小数点后6位,并且整数部...
独山县13464313829: 计算机c语言中double型数据是什么类型,数据长度是什么 - ?
吁查特福: 双精度浮点型,就是数学里的小数,数据长度为64个字节.
独山县13464313829: c语言double什么意思 - ?
吁查特福: double在这里是指将变量i和变量s定义为双精度实型变量.(也就是说:赋给这两个变量的值将以双精度实型格式存储在内存中) 注意事项 1、类型说明符和表达式都必须加括号(单个变量可以不加括号),如把(int)(x+y)写成(int)x+y则...
独山县13464313829: C语言里 单精度型与双精度型怎么表示?是什么样子? - ?
吁查特福: 单精度float 占4字节 -3.4*10^-38到 3.4*10^38, 双精度double 占8字节 -1.7*10^-308到1.7*10^308
独山县13464313829: 请问一下C语言中的“双精度浮点”是什么意思?我是自学哦的,还请说详细些,能让我明白,谢谢了 - ?
吁查特福: 此数据类型与单精度数据类型(float)相似,但精确度比float高,通常情况双精度型占8 个字节(64位)内存空间,其数值范围为1.7E-308~1.7E+308. 建议去百度一下,我这里说不全.
独山县13464313829: C语言中,要使用双精度浮点型(double)数据该怎样写?我用的是WinTC整型要写int main()和%d - ?
吁查特福: #include int main(){ double a,b; scanf("%lf",&a,&b); printf("%lf\n",a+b); return 0;
独山县13464313829: 计算机C语言中的关键字:double是什么意思? - ?
吁查特福: double:表示双精度字型.C语言中的关键字: auto :声明自动变量 break:跳出当前循环 case:开关语句分支 char :声明字符型变量或函数返回值类型 const :声明只读变量 continue:结束当前循环,开始下一轮循环 default:开关语句中的...
独山县13464313829: c语言,什么是双精度型变量? - ?
吁查特福: 1)单精度就是用float, 双精度就是用double. 2)float定义的变量占4个字节,双精度定义的变量占8个字节. 3)双精度能表示的数更广,单精度相对较窄.
独山县13464313829: C 语言中双精度浮点型精度怎样保留位数 - ?
吁查特福: C语言中对于double型数据在进行格式化输出时候可以用%m.nf的格式声明指定数据宽度和小数位数.其中m指的是输出数据所占的宽度,n指的是小数的位数. 但是应该注意一个双精度数只能保证15位有效数字的精确度.