Как я могу получить DOUBLE_MAX?
AFAIK, C поддерживает только несколько типов данных:
int, float, double, char, void enum.
Мне нужно сохранить число, которое может достигнуть высоких 10 цифр. Поскольку я получаю низкий 10-значный номер из
INT_MAX
я полагаю, мне нужен двойной.
<limits.h>
не имеет DOUBLE_MAX. Я нашел DBL_MAX
в Интернете, который сказал, что это LEGACY, а также похоже на С++. Является двойной, что мне нужно? Почему нет DOUBLE_MAX?
Ответы
Ответ 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-разрядного).