为什么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 位数字。
此代码:
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 位数字。