我如何获得DOUBLE_MAX?

P.B*_*key 54 c double

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

int, float, double, char, void enum.
Run Code Online (Sandbox Code Playgroud)

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

INT_MAX

,我想我需要一个双倍.

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

Ran*_*832 70

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

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

  • 我怀疑"LEGACY"来自一些C++网站,它希望你使用他们神秘的标准数字限制系统而不是宏,因为"宏很脏"或者这样...... (4认同)
  • 就像我说的那样,我唯一看到它标记为LEGACY的地方是在unix标准中,该标准谈论的是_its存在于limit.h_而不是整个DBL_MAX中。 (2认同)

Jer*_*fin 24

你得到或的整数限制.浮点特性在C 中定义.在C++中,首选版本通常是(为此).<limits.h><climits><float.h>std::numeric_limits<double>::max()#include <limits>

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


Sod*_*ved 6

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


R..*_*R.. 6

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


Fem*_*ref 5

您正在寻找float.h标题。