为什么float的最小值是0?

Why is the minimum value of a float 0?

此代码:

int main(){

    printf("The value of FLT_MAX is %.5f\n", FLT_MAX);
    printf("The value of FLT_MIN is %.5f\n", FLT_MIN);
    printf("A float takes %i bytes\n", sizeof(float));

    float fx = -1.24;
    printf("The value of fx is %f\n", fx);

}

returns:

The value of FLT_MAX is 340282346638528859811704183484516925440.00000
The value of FLT_MIN is 0.00000
A float takes 4 bytes
The value of fx is -1.240000

float是未签名还是已签名?为什么 FLT_MIN 0 但另一方面我可以在 float?

中存储一个负值

FLT_MIN的值是实现定义的,它不是零,而是一个正数(准确的说,是最小的归一化正数float)。它的一个典型值是 1E-37.

你的代码中的问题是,你用 %.5f 打印它,小数点后只有 5 位数字。