浮点类型的限制?

时间:2011-01-24 20:13:36

标签: c types floating-point

#include <stdio.h>
#include <limits.h>

int main(void){
        printf("Type                Size      Min                 Max\n----------------------------------------------------------------------\n");
        printf("%-20s%-10d%-20ld%-20ld\n", "long", sizeof(long), LONG_MIN, LONG_MAX);
        printf("%-20s%-10d%-20lu%-20lu\n", "unsigned long", sizeof(long), 0, ULONG_MAX);
        return 0;
}

哪里加倍?即变量LONG_MIN在文件limits.h中。在哪种类型中?

   int i, min, max;

    for (i = 1.0; i > 0; ++i)
    {
        max = i;
    };
    min = i;
    printf ("int: min: %d max: %d \n", min, max);

浮动和双重怎么做? min怎么计算这个变量? 对不起坏英语

4 个答案:

答案 0 :(得分:15)

浮点类型的限制在float.h not limits.h

中定义

答案 1 :(得分:8)

在linux上,我有float.h,它分别为最大float和double值定义了FLT_MAX和DBL_MAX。我不确定那是多么“标准”,但是......

答案 2 :(得分:0)

我认为这就是你想要的:

浮动:%f

long float(double):%lf

您可能还希望以指数表示法看到它:%E

对于float和double的min / max,这里是你想要的

这是来自float.h的片段:

#define DBL_MAX 1.7976931348623158e+308 /* max value */
#define DBL_MIN 2.2250738585072014e-308 /* min positive value */

#define FLT_MAX 3.402823466e+38F /* max value */
#define FLT_MIN 1.175494351e-38F /* min positive value */

答案 3 :(得分:-2)

要计算给定数据类型的限制,您只需计算(2^(sizeof(type) * 8)) - 1,即(2^number_of_bits) - 1

然后,如果您认为此类型是有符号的,则最小值和最大值为-2^(number_of_bits - 1)(2^(number_of_bits - 1)) - 1,或者如果它们是无符号,则MIN将为0且MAX (2^number_of_bits) - 1

这仅适用于整数类型,因此不适用于浮点数和双精度数,因此仅适用于二进制补码整数表示。