为了了解在浮点下溢的情况下会发生什么,我发现我可以使浮点数比 FLT_MIN 小得多。我在 OS 10.9 上使用 xcode 5.1。语言方言是gnu99。
#include <stdio.h>
#include <stdlib.h>
#include <float.h>
int main(int argc, const char * argv[])
{
float underflow = FLT_MIN * 0.0000004;
printf("Float min is %f or %e.\nUnderflow is %f or %e\nMin float exp is %d.\n", FLT_MIN, FLT_MIN, underflow, underflow, FLT_MIN_10_EXP);
return 0;
}
打印:
浮点最小值为 0.000000 或 1.175494e-38。
下溢为 0.000000 或 4.203895e-45
最小浮点 exp 为 -37。
- 有没有更有效的方法来证明数据类型的限制?
- 为什么 FLT_MIN 实际上不是最小的浮点值?我应该使用其他常量吗?输入上一个问题后,我找到了 FLT_TRUE_MIN。这个数字是多少?