c - 在 C 上定义 LDBL_MAX/MIN

标签 c double long-double

我正在使用 C,我必须做一个练习,其中我必须打印 long double minlong 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);

这是一个问题,因为我的分配需要 LDBLDBL 两个不同的值。

最佳答案

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/

相关文章:

c - 需要帮助定位单个代码行中的错误

c - 仅初始化 C 中的一个嵌套结构

java - 使用Java Double的Mysql DOUBLE列数据被截断异常

c++ - 赋值后 Long double 重置为 0

.net - 在 .NET 中转换 long double

CUDA 内核和 2D 数组 - 它是如何工作的?

c - 在 C 中翻转 double /浮点符号的最快方法

c# - 为什么解析具有浮点值的字符串会给我一个点后有大量数字的数字

c++ - 应该使用哪个函数将字符串转换为 long double?

c - fread() 完成读取文件后是否会前进指针?