C 双精度-最大值

C 双精度-最大值,c,double,C,Double,我有一个关于双精度的愚蠢问题。我已经读到一个double(例如在C中)是用64位表示的,但是我也读到一个double可以表示的最大值大约是10^308。10^308如何仅用64位表示?它将不包含10^308数字的308位。双精度数字包含指数和有限的位数 有关内存中浮点编码的详细说明,请参阅(英语)(法语) 它不会保存10^308数字的308位。双精度数字包含指数和有限的位数 有关内存中浮点编码的详细说明,请参阅(英语)(法语) 根据C标准,有三种浮点类型:float、double和long do

我有一个关于双精度的愚蠢问题。我已经读到一个double(例如在C中)是用64位表示的,但是我也读到一个double可以表示的最大值大约是10^308。10^308如何仅用64位表示?

它将不包含10^308数字的308位。双精度数字包含指数和有限的位数


有关内存中浮点编码的详细说明,请参阅(英语)(法语)

它不会保存10^308数字的308位。双精度数字包含指数和有限的位数


有关内存中浮点编码的详细说明,请参阅(英语)(法语)

根据C标准,有三种浮点类型:
float
double
long double
,所有浮点类型的值表示都是实现定义的

然而,大多数编译器都遵循IEEE 754标准规定的binary64格式

这种格式有:

  • 1符号位
  • 11位表示指数
  • 尾数52位

要查找
double
可容纳的最大值,应检查标题
中定义的
DBL\u MAX
。使用binary64 IEEE 754标准的实现大约为1.8×10308。

根据C标准,有三种浮点类型:
float
double
long double
,所有浮点类型的值表示都是实现定义的

然而,大多数编译器都遵循IEEE 754标准规定的binary64格式

这种格式有:

  • 1符号位
  • 11位表示指数
  • 尾数52位

要查找
double
可容纳的最大值,应检查标题
中定义的
DBL\u MAX
。对于使用binary64 IEEE 754标准的实现,它大约为1.8×10308。

64位浮点IEEE数字的位模式中有一个指数。在Python中,我计算以下内容:

>>> import numpy as np
>>> 2**(-52) == np.finfo(np.float64).eps
True
>>> np.finfo(np.float64).max
1.7976931348623157e+308
>>> (2-2**(-52)) * 2**(2**10-1)
1.7976931348623157e+308
>>> (2-2**(-52)) * 2**(2**10-1) == np.finfo(np.float64).max
True

所以它比10^308多一点。“2**(2**10-1)”是指数部分。另请参见64位浮点IEEE数字的位模式中有一个指数。在Python中,我计算以下内容:

>>> import numpy as np
>>> 2**(-52) == np.finfo(np.float64).eps
True
>>> np.finfo(np.float64).max
1.7976931348623157e+308
>>> (2-2**(-52)) * 2**(2**10-1)
1.7976931348623157e+308
>>> (2-2**(-52)) * 2**(2**10-1) == np.finfo(np.float64).max
True

所以它比10^308多一点。“2**(2**10-1)”是指数部分。另请参见

您可能需要阅读有关。。。。与这个巨大的数字几乎相同,它只能用6个字符来表示
10^308
。这是如何表现的?;)详细信息:
DBL_MAX
是最大有限
double
——通常约为1.8e308。许多(大多数)系统还允许大于DBL_MAX的“无穷大”,当然,也不需要无限位来表示。您可能想了解。。。。与这个巨大的数字几乎相同,它只能用6个字符来表示
10^308
。这是如何表现的?;)详细信息:
DBL_MAX
是最大有限
double
——通常约为1.8e308。许多(大多数)系统还允许大于DBL_MAX的“无穷大”,当然,也不需要无限位来表示。您的意思是链接吗?:-)是的,对不起。有法文版本。你是想链接吗?:-)是的,对不起。有法文版本。