Подтвердить что ты не робот

Как я могу получить DOUBLE_MAX?

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

int, float, double, char, void enum.

Мне нужно сохранить число, которое может достигнуть высоких 10 цифр. Поскольку я получаю низкий 10-значный номер из

INT_MAX

я полагаю, мне нужен двойной.

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

4b9b3361

Ответ 1

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

(ссылка на стандарт unix, даже если у вас нет тега unix, поскольку, вероятно, там, где вы нашли нотацию "LEGACY", но многое из того, что показано там для float.h, также находится в стандарте C обратно на C89)

Ответ 2

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

Ответ 6

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