我正在使用 C,我必须做一个练习,其中我必须打印 long double min
和 long double max
的值。
我使用了 float.h
作为 header ,但这两个宏 (LDBL_MIN/MAX
) 给了我相同的值,就好像它只是一个 double 值一样。
我使用的是 Visual Studio 2015,如果我将鼠标悬停在 LDBL MIN
上,它会显示 #define LDBL_MIN DBL_MIN
。这就是为什么它打印 dbl_min
而不是 ldbl_min
的原因吗?
如何解决这个问题?
printf("Type: Long Double Value: %lf Min: %e Max: %e Memory:%lu\n",
val10, LDBL_MIN, LDBL_MAX, longd_size);
这是一个问题,因为我的分配需要 LDBL
和 DBL
两个不同的值。
最佳答案
C 未指定 long double
必须具有比 double
更大的精度/范围。
即使实现将它们视为不同的类型,它们也可能具有相同的实现、范围、精度、最小值、最大值等。
关于 Visual Studio,MS Long Double有帮助。
要解决该问题,请使用另一个支持 long double
的编译器,其精度/范围比 double
更高。也许GCC ?
关于c - 在 C 上定义 LDBL_MAX/MIN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39796350/