Hoe krijg ik DOUBLE_MAX?

AFAIK, C ondersteunt slechts een paar gegevenstypen:

int, float, double, char, void enum.

Ik moet een nummer opslaan dat tot in de hoge 10 cijfers kan reiken. Aangezien ik een lage 10-cijferige # krijg van

INT_MAX

, ik denk dat ik een dubbele nodig heb.

<limits.h>heeft geen DOUBLE_MAX. Ik vond een DBL_MAXop internet die zei dat dit LEGACY is en ook C++ lijkt te zijn. Is dubbel wat ik nodig heb? Waarom is er geen DOUBLE_MAX?


Antwoord 1, autoriteit 100%

DBL_MAXwordt gedefinieerd in <float.h>. De beschikbaarheid ervan in <limits.h>op unix is wat is gemarkeerd als “(LEGACY)”.

(link naar de unix-standaard hoewel je geen unix-tag hebt, omdat je daar waarschijnlijk de “LEGACY”-notatie hebt gevonden, maar veel van wat daar wordt getoond voor float.h is ook in de C-standaard terug naar C89)


Antwoord 2, autoriteit 44%

Je krijgt de integerlimieten in <limits.h>of <climits>. Kenmerken van drijvende komma’s worden gedefinieerd in <float.h>voor C. In C++ is de voorkeursversie gewoonlijk std::numeric_limits<double>::max()( waarvoor u #include <limits>).

Wat uw oorspronkelijke vraag betreft, als u een groter integer-type wilt dan long, moet u waarschijnlijk overwegen long long. Dit is niet officieel opgenomen in C++ 98 of C++ 03, maar maakt deel uit van C99 en C++ 11, dus alle redelijk huidige compilers ondersteunen het.


Antwoord 3, Autoriteit 12%

Het is in de standaard float.h bevatten bestand. U wilt DBL_MAX


Antwoord 4, Autoriteit 8%

Gebruik doubleOm grote gehele getallen op te slaan is twijfelachtig; Het grootste geheel getal dat betrouwbaar kan worden opgeslagen in doubleis veel kleiner dan DBL_MAX. U moet long long, en als dat niet genoeg is, hebt u uw eigen arbitraire precisiecode of een bestaande bibliotheek nodig.


Antwoord 5, Autoriteit 5%

U zoekt de float.hheader.


Antwoord 6, Autoriteit 3%

INT_MAXis slechts een definitie in limits.h . U maakt het niet duidelijk of u een geheel of zwevende puntwaarde wilt opslaan. Als geheel getal, en het gebruik van een 64-bits compiler, gebruikt u een long(LLONGvoor 32-bits).

Other episodes