浮点的下限

时间:2009-11-11 09:02:56

标签: c floating-point standards epsilon

C中的浮点类型是否有下限?就像整数类型的下限一样(int至少为16位)?

7 个答案:

答案 0 :(得分:3)

是。 float.h包含常量,例如:

FLT_EPSILON, DBL_EPSILON, LDBL_EPSILON这是幅度最小的非零值,可以用floatdoublelong double表示来表示。

FLT_MAXFLT_MIN代表可以代表float的极端正数和负数。类似的DBL_LDBL_可用。

FLT_DIG, DBL_DIG, LDBL_DIG被定义为十进制数字精度。

您要求xxx_MINxxx_EPSILON值。

沿着这些方向,这是一个I posted some code which displays the internals of a 64-bit IEEE-754 floating-point number.

的问题

答案 1 :(得分:3)

要严格和坚持:

ISO/IEC 9899:TC2: (WG14/N1124m May 6, 2005)

5.2.4.2.2,浮动类型的特征< float.h>

答案 2 :(得分:2)

float.h包含许多宏,用于描述浮动类型的各种属性(包括FLT_MINDBL_MIN)。

float.h中限制要求的描述在标准中给出(C90或C99 - 5.2.4.2.2“浮动类型的特征”)。

特别是,根据标准,任何实现都必须支持1E-37float的至少double的下限。但是实现可以自由地做得更好(并指出它在FLT_MINDBL_MIN中的作用)。

如果您需要标准文件的副本,请参阅此问题以获取标准文件副本的位置信息:

答案 3 :(得分:1)

也许这有帮助:float.h reference(它是C ++,我不确定它是否也适用于普通C)

答案 4 :(得分:1)

这个Draft C99 standard (PDF)说明了5.2.4.2.2节中浮点类型精度的最小值。

(通过Wikipedia on C99找到。)

答案 5 :(得分:0)

这里有用的参考是What Every Computer Scientist Should Know About Floating-Point Arithmetic

浮点数的性质 - 它的大小,精度,限制 - 实际上是由硬件而不是编程语言定义的。 x86上的单精度浮点数与C,C#,Java和任何其他实用编程语言相同。 (例外是在软件中实现奇数浮点数宽度的深奥编程语言。)

答案 6 :(得分:0)

摘自标准草案(n1401.pdf)

                                      Annex F
                                    (normative)
                       IEC 60559 floating-point arithmetic
    F.1 Introduction
1   ... An implementation that defines _ _STDC_IEC_559_ _ shall conform to
    the specifications in this annex. ...

    F.2 Types
1   The C floating types match the IEC 60559 formats as follows:
    -- The float type matches the IEC 60559 single format.
    -- The double type matches the IEC 60559 double format.
    -- The long double type matches an IEC 60559 extended format ...

维基百科有an article about IEC 559 (or rather IEEE 754-1985)你可能会感兴趣。