为什么浮点数0的最小值?

时间:2015-03-19 14:42:42

标签: c floating-point

此代码:

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);

}

返回:

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中存储负值?

1 个答案:

答案 0 :(得分:5)

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

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