gpt4 book ai didi

c++ - 非 IEEE 754 浮点类型的大小如何受到限制?

转载 作者:搜寻专家 更新时间:2023-10-31 00:37:16 25 4
gpt4 key购买 nike

非 IEEE754 浮点类型的大小如何 float , double , 和 long double受限?

我知道每个浮点类型必须能够表示较小类型的所有值,这意味着 sizeof(float) <= sizeof(double) <= sizeof(long double) .

据我所知,float.h/cfloat最低要求 sizeof(float)*CHAR_BIT>=32 , sizeof(double)*CHAR_BIT>=64 , 和 sizeof(long double)*CHAR_BIT>=64 .

还有其他限制吗?如果是,它们是什么,是否暗示了这些尺寸的最大值?

最佳答案

认为问题是关于可表示值的约束。只有相当基本的约束没有在 C++ 中明确说明,但在 C 标准的第 5.2.4.2.2 节(“ float 类型的特征 <float.h>”)第 11 段(我只是引用在这种情况下我认为有趣的值(value)观):

The values given in the following list shall be replaced by constant expressions with implementation-defined values that are greater or equal in magnitude (absolute value) to those shown, with the same sign:

  • FLT_DECIMAL_DIG 6
  • DBL_DECIMAL_DIG 10
  • LDBL_DECIMAL_DIG 10
  • FLT_MIN_10_EXP -37
  • DBL_MIN_10_EXP -37
  • LDBL_MIN_10_EXP -37
  • FLT_MAX_10_EXP +37
  • DBL_MAX_10_EXP +37
  • LDBL_MAX_10_EXP +37
  • FLT_MAX 1E+37
  • DBL_MAX 1E+37
  • LDBL_MAX 1E+37
  • FLT_EPSILON 1E-5
  • DBL_EPSILON 1E-9
  • LDBL_EPSILON 1E-9

这几乎说明了 float可能小于 doubledoublelong double可以是同一件事,并且与 IEEE-754 的限制相比,它们相去甚远。

关于c++ - 非 IEEE 754 浮点类型的大小如何受到限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20180969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com