C中的浮点类型是否有下限?就像整数类型的下限一样(int至少为16位)?
答案 0 :(得分:3)
是。 float.h
包含常量,例如:
FLT_EPSILON, DBL_EPSILON, LDBL_EPSILON
这是幅度最小的非零值,可以用float
,double
和long double
表示来表示。
FLT_MAX
和FLT_MIN
代表可以代表float
的极端正数和负数。类似的DBL_
和LDBL_
可用。
FLT_DIG, DBL_DIG, LDBL_DIG
被定义为十进制数字精度。
您要求xxx_MIN
或xxx_EPSILON
值。
沿着这些方向,这是一个I posted some code which displays the internals of a 64-bit IEEE-754 floating-point number.
的问题答案 1 :(得分:3)
答案 2 :(得分:2)
float.h
包含许多宏,用于描述浮动类型的各种属性(包括FLT_MIN
和DBL_MIN
)。
float.h
中限制要求的描述在标准中给出(C90或C99 - 5.2.4.2.2“浮动类型的特征”)。
特别是,根据标准,任何实现都必须支持1E-37
或float
的至少double
的下限。但是实现可以自由地做得更好(并指出它在FLT_MIN
和DBL_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)你可能会感兴趣。