我如何获得DOUBLE_MAX?

时间:2011-04-29 16:23:07

标签: c double

AFAIK,C只支持几种数据类型:

int, float, double, char, void enum.

我需要存储一个可以达到10位数的数字。因为我从

获得了一个低10位#
  

INT_MAX

,我想我需要一个双倍。

<limits.h>没有DOUBLE_MAX。我在互联网上找到一个DBL_MAX,说这是LEGACY,也似乎是C ++。是我需要的两倍?为什么没有DOUBLE_MAX?

6 个答案:

答案 0 :(得分:67)

DBL_MAX<float.h>中定义。它在<limits.h>上在unix上的可用性被标记为“(LEGACY)”。

(链接到unix标准,即使你没有unix标签,因为那可能是你发现“LEGACY”符号的地方,但是那里显示的float.h的大部分也在C标准中回到C89)< / p>

答案 1 :(得分:21)

您可以在<limits.h><climits>中获得整数限制。浮点特征在<float.h>中为C定义。在C ++中,首选版本通常是std::numeric_limits<double>::max()(为此#include <limits>)。

关于您的原始问题,如果您想要一个比long更大的整数类型,您应该考虑long long。这不是正式包含在C ++ 98或C ++ 03中,而是C99和C ++ 11的一部分,因此所有合理的当前编译器都支持它。

答案 2 :(得分:6)

它在标准的float.h包含文件中。你想要DBL_MAX

答案 3 :(得分:6)

使用double存储大整数是可疑的;可以在double中可靠存储的最大整数远小于DBL_MAX。您应该使用long long,如果这还不够,则需要您自己的任意精度代码或现有库。

答案 4 :(得分:1)

您正在寻找float.h标题。

答案 5 :(得分:1)

INT_MAX只是limits.h中的定义。您不清楚是否需要存储整数或浮点值。如果是整数,并且使用64位编译器,则使用LONGLLONG表示32位)。