首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++标准在哪里定义浮点类型的值范围?

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

Stack Overflow用户
提问于 2009-11-29 19:49:33
回答 3查看 4.2K关注 0票数 3

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

  • 浮标范围n= -(2^23-1) - (2^23-1),e= -126 - 127,
  • 双量程为n= -(2^52-1) - (2^52-1),e= -1022 - 1023

我查看了C++标准,但没有找到标准指定此标准的位置,也没有规定浮动、双和长双类型与其他(IEEE)标准中定义的范围的关联。我在3.9.1.8中发现的唯一相关问题是:

有三种浮点类型:浮点数、双浮点数和长浮点数。类型double提供的精度至少与浮点数一样高,而long double提供的精度至少与双精度相同。类型float的值集是类型double的值集的子集;类型double的值集是long double类型的值集的子集。浮点类型的值表示是实现定义的.

也没有提到类型所提供的最小范围。

标准在哪里/如何指定(最小值)?浮点类型的值范围?或者编译器可以自由选择任何值范围,但仍然是标准兼容的?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-11-29 20:46:20

与整数限制一样,floatdoublelong double的限制是从C标准导入的。常数FLT_MAXDBL_MAXLDBL_MAX的最小值是1E+37。对于它们的*_MIN变体,最大值是1E-37

票数 1
EN

Stack Overflow用户

发布于 2009-11-29 19:55:05

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

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

票数 6
EN

Stack Overflow用户

发布于 2009-11-29 19:55:20

标准没有指定这样的东西,因为它们通常依赖于硬件,并且随着时间的推移而改变。虽然现在32位被认为是一种标准,但在10年内,在少于64位的时间内做事情可能看起来可能令人讨厌。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1816552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档