Как мне получить DOUBLE_MAX? - PullRequest
51 голосов
/ 29 апреля 2011

AFAIK, C поддерживает только несколько типов данных:

int, float, double, char, void enum.

Мне нужно сохранить число, которое может доходить до 10 старших цифр. Так как я получаю младшую 10 цифру # от

INT_MAX

, полагаю, мне нужен дубль.

<limits.h> не имеет DOUBLE_MAX. Я нашел DBL_MAX в интернете, который сказал, что это LEGACY, а также, кажется, C ++. Это двойное, что мне нужно? Почему нет DOUBLE_MAX?

Ответы [ 6 ]

68 голосов
/ 29 апреля 2011

DBL_MAX определяется в <float.h>.Его доступность в <limits.h> в Unix - это то, что помечено как «(LEGACY)».

(ссылка на стандарт Unix, даже если у вас нет тега Unix, так как это, вероятно, где вы нашлинотация «LEGACY», но многое из того, что показано там для float.h, также содержится в стандарте C до C89)

23 голосов
/ 29 апреля 2011

Вы получаете целое число пределы в <limits.h> или <climits>. Характеристики с плавающей точкой определены в <float.h> для C. В C ++ предпочтительной версией обычно является std::numeric_limits<double>::max() (для которой вы #include <limits>).

Что касается вашего исходного вопроса, если вы хотите, чтобы целочисленный тип был больше, чем long, вам, вероятно, следует рассмотреть long long. Это официально не включено в C ++ 98 или C ++ 03, но является частью C99 и C ++ 11, поэтому все разумно современные компиляторы поддерживают его.

6 голосов
/ 29 апреля 2011

Использование double для хранения больших целых чисел сомнительно; наибольшее целое число, которое может быть надежно сохранено в double, намного меньше, чем DBL_MAX. Вам следует использовать long long, а если этого недостаточно, вам нужен собственный код произвольной точности или существующая библиотека.

6 голосов
/ 29 апреля 2011

В стандартном включаемом файле float.h. Вы хотите DBL_MAX

1 голос
/ 29 апреля 2011

INT_MAX - это просто определение в limit.h .Вы не даете понять, нужно ли вам хранить целое число или значение с плавающей запятой.Если целое число и используется 64-разрядный компилятор, используйте LONG (LLONG для 32-разрядного).

1 голос
/ 29 апреля 2011

Вы ищете заголовок float.h.

...