C++标准在哪里定义float类型的值范围?

sho*_*tsy 2 c++ floating-point double standards range

据我所知,浮点值的形式为n*2 ^ e,其中

  • 浮点范围为n = - (2 ^ 23-1) - (2 ^ 23-1),e = -126 - 127,
  • 双范围是n = - (2 ^ 52-1) - (2 ^ 52-1),并且e = -1022-1023

我正在查看C++标准,但未能找到标准指定的位置,或者要求float,double和long double类型与其他(IEEE)标准中定义的范围相关联.我在3.9.1.8中找到的唯一相关内容是:

有三种浮点类型:float,double和long double.double类型提供至少与float一样多的精度,long double类型提供至少与double一样多的精度.float类型的值集是double类型的值集的子集; double类型的值集是long double类型的值集的子集.浮点类型的值表示是实现定义的.

并没有提到该类型提供的最小范围.

标准在何处/如何指定浮点类型的(最小?)值范围?或者编译器可以自由选择任何值范围并且仍然符合标准吗?

CB *_*ley 6

你引用的是关于C++中浮点类型的所有保证.正如它所说,他们的表示是实现定义的.

但是,您可以使用std::numeric_limits模板查询有关限制的信息以及类型是否为IEC 559(IEEE 754)指定类型<limits>.