双精度浮点数 - Wikiwand
For faster navigation, this Iframe is preloading the Wikiwand page for 双精度浮点数.

双精度浮点数

维基百科,自由的百科全书

此条目需要扩充。 (2007年9月26日)请协助改善这篇条目,更进一步的信息可能会在讨论页或扩充请求中找到。请在扩充条目后将此模板移除。

双精度浮点数(double)是电脑使用的一种数据类型。比起单精度浮点数双精度浮点数(double)使用 64 位(8字节) 来存储一个浮点数。 它可以表示十进位制的15或16位有效数字,其可以表示的数字的绝对值范围大约是

格式

sign bit(符号):用来表示正负号

exponent(指数):用来表示次方数

mantissa(尾数):用来表示精确度

符号

0代表数值为正,1代表数值为负。

指数

类比整数使用所有位为 0 的数字表示数值“0”,双精度浮点数表示 0 时指数部分也为 0。若如此,便可能产生冲突:比如全 0 的数字可能表示“0”,也可能表示 (参考下文“尾数”的解释)。于是此处规定:

  • :用来代表带符号的 0(尾数为 0)或下溢数(尾数不为 0)。
  • :用来代表无穷大(尾数为 0)或NaN(尾数不为 0)。
  • 其他:代表 2 的(exponent-0x3ff)次方。

尾数

在二进制的“科学记号”,数字被表示为:

为了最大限度提高精确度,可以要求尾数规范化,把尾数处理到大于等于1而小于2的区间内,便可省去前述的“1”。例如:

 二進位制的   可以規格化為 ,存儲存尾数只需要儲存1101即可
 二進位制的   可以規格化為 ,儲存時尾數只需要儲存10011即可

于是,可得以下形式:

小结

根据以上的叙述,一个双精度浮点数所代表的数值为:

例子

 3ff0 0000 0000 0000   = 1
 c000 0000 0000 0000   = -2
 7fef ffff ffff ffff   ~ 1.7976931348623157 x 10308 (Max Double)
 3fd5 5555 5555 5555   ~ 1/3
 0000 0000 0000 0000   = 0
 8000 0000 0000 0000   = -0
 7ff0 0000 0000 0000   = 無限大
 fff0 0000 0000 0000   = 負無限大

参考文献

参阅

{{bottomLinkPreText}} {{bottomLinkText}}
双精度浮点数
Listen to this article