双精度浮点数_百度百科

双精度浮点数

计算机使用的数据类型
收藏
0有用+1
0
双精度浮点数(double)是计算机使用的一种数据类型,使用 64 位(8字节) 来存储一个浮点数。 它可以表示十进制的15或16位有效数字,其可以表示的数字的绝对值范围大约是:-1.79E+308 ~ +1.79E+308 [1]
中文名
双精度浮点数
外文名
double
标    准
IEEE 754
应用领域
计算机
范    围
-1.79E+308 ~ +1.79E+308
占用空间
8个字节

定义概述

播报
编辑
C、C++中使用到的双精度浮点数(double)类型是在IEEE二进制浮点数算术标准(ANSI/IEEE Std 754-1985)中定义的。双精度浮点数(Double)用来表示带有小数部分的实数,一般用于计算机编程中定义变量,占用8个字节存储空间,其数值范围为-1.7E-308~1.7E+308,双精度浮点数最多有15或16位十进制有效数字 [2]

精度

播报
编辑
双精度二进制小数,使用64个比特位存储。
1位
11位
52位
S(符号位),编号63
E(阶码位),编号62 ~52
M(小数位),编号51 ~ 0
0表示正,1表示负
1~2046
任意
采用IEEE754规定的规约数的二进制表示范围为 [3](*表示0或1都行):
规约数最小值
*
000 0000 0001
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
规约数最大值
*
111 1111 1110
1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111
转化为十进制的公式:
,i表示小数位从左到右的位数,第一位i=1,
表示每一位的值,
=0或者1。

代码

播报
编辑
#include <stdio.h>    int main()    {        double d = 3.5;       printf("%f\r\n", d);       printf("%p\r\n", &d);     //此处用WinHex查看内存中f的存储是否和预想的一样 system("pause");     //此处用WinHex修改d在内存中的数值,并验证是否的到预期的新浮点数 printf("%f\r\n", d);1 system("pause"); return 0; }
d=3.5(二进制11.1)的double形式为
0100 0000 0000 1100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
40 0C 00 00 00 00 00 00
小尾方式为 00 00 00 00 00 00 0C 40
d=3.500000001DFBB0

拓展延伸

播报
编辑
单精度浮点数(float)与双精度浮点数(double)的区别如下:
(1)在内存中占有的字节数不同
(2)有效数字位数不同
(3)所能表示数的范围不同
  • 单精度浮点的表示范围:-3.40E+38 ~ +3.40E+38
  • 双精度浮点的表示范围:-1.79E+308 ~ +1.79E+308
(4)在程序中处理速度不同
一般来说,CPU处理单精度浮点数的速度比处理双精度浮点数快。