Ich muss eine Nummer speichern, die bis in die hohen 10 Ziffern reichen könnte. Da bekomme ich eine niedrige 10 stellige # ab
INT_MAX
ich schätze, ich brauche ein Doppel.
<limits.h> hat kein DOUBLE_MAX. Ich habe einen … gefunden DBL_MAX im Internet, das sagte, dies sei LEGACY und scheint auch C ++ zu sein. Brauche ich das Doppelte? Warum gibt es keine DOUBLE_MAX?
1) Wie andere betonten, brauchen Sie kein a doublebenötigen Sie einen ganzzahligen 64-Bit-Typ (entweder long longoder uint64_t). 2) Wenn Sie a doublebrauchst du nicht DBL_MAX (das ist die größte Zahl, die gespeichert werden kann), die Sie benötigen DBL_DIG, das ist die Anzahl signifikanter Ziffern, die Sie speichern können. (Es nützt Ihnen nichts, 9999999999 speichern zu können, wenn Sie es nicht von 9999999998 unterscheiden können). In jedem Fall ist auf den meisten Systemen a double kann alle Ganzzahlen der gewünschten Größe genau speichern.
– Robᵩ
29. April 2011 um 17:12 Uhr
Auf den meisten Systemen kann ein Double alle positiven ganzen Zahlen kleiner als 9007199254740993 genau speichern.
– Robᵩ
29. April 2011 um 17:34 Uhr
C hat viele Typen: char, unsigned char, signed char, short, unsigned short, int, unsigned int, long, unsigned long, long long, unsigned long long, float, double, long double, voidAufzählungen, Strukturen, Funktionen, Arrays und Zeiger auf all diese.
– Muhende Ente
10. September 2015 um 1:39 Uhr
Zufällig832
DBL_MAX ist darin definiert <float.h>. Seine Verfügbarkeit in <limits.h> unter Unix ist das, was als “(LEGACY)” gekennzeichnet ist.
(Verknüpfung mit dem Unix-Standard, obwohl Sie kein Unix-Tag haben, da Sie dort wahrscheinlich die Notation “LEGACY” gefunden haben, aber vieles von dem, was dort für float.h angezeigt wird, ist auch im C-Standard zurück zu C89)
Ich vermute, das “LEGACY” stammt von einer C++-Site, die möchte, dass Sie ihr obskures numerisches Std-Grenzwertsystem anstelle von Makros verwenden, weil “Makros schmutzig sind” oder so …
– R.. GitHub HÖR AUF, EIS ZU HELFEN
29. November 2012 um 13:55 Uhr
Wie gesagt, der einzige Ort, an dem ich gesehen habe, dass es mit LEGACY gekennzeichnet ist, war in einem Unix-Standard, über den gesprochen wurde seine Anwesenheit in den Grenzen.h eher als DBL_MAX als Ganzes
– Random832
29. November 2012 um 17:40 Uhr
Jerry Sarg
Du bekommst die ganze Zahl Grenzen ein <limits.h> oder <climits>. Fließkommakennlinien sind in definiert <float.h> für C. In C++ ist die bevorzugte Version normalerweise std::numeric_limits<double>::max() (wofür du #include <limits>).
Zu Ihrer ursprünglichen Frage, wenn Sie einen größeren Integer-Typ als möchten longsollten Sie wahrscheinlich in Betracht ziehen long long. Dies ist nicht offiziell in C++98 oder C++03 enthalten, ist aber Teil von C99 und C++11, sodass alle halbwegs aktuellen Compiler es unterstützen.
vs2012 hat sich beschwert, ohne die Klammern zu haben, dh: std::numeric_limits::max(). habe versucht, die ans schnell zu bearbeiten, aber die Bearbeitung war zu klein.
Es befindet sich in der standardmäßigen Float.h-Include-Datei. Sie wollen DBL_MAX
Verwenden double große ganze Zahlen zu speichern ist zweifelhaft; die größte ganze Zahl, in der zuverlässig gespeichert werden kann double ist viel kleiner als DBL_MAX. Du solltest benutzen long longund wenn das nicht ausreicht, benötigen Sie Ihren eigenen Code mit beliebiger Genauigkeit oder eine vorhandene Bibliothek.
Sie suchen die float.h Header.
INT_MAX ist nur eine Definition in Grenzen.h. Sie machen nicht deutlich, ob Sie einen Integer- oder Gleitkommawert speichern müssen. Wenn es sich um eine ganze Zahl handelt und Sie einen 64-Bit-Compiler verwenden, verwenden Sie a LONG (LLONG für 32 Bit).
14204200cookie-checkWie bekomme ich DOUBLE_MAX?yes
1) Wie andere betonten, brauchen Sie kein a
double
benötigen Sie einen ganzzahligen 64-Bit-Typ (entwederlong long
oderuint64_t
). 2) Wenn Sie adouble
brauchst du nichtDBL_MAX
(das ist die größte Zahl, die gespeichert werden kann), die Sie benötigenDBL_DIG
, das ist die Anzahl signifikanter Ziffern, die Sie speichern können. (Es nützt Ihnen nichts, 9999999999 speichern zu können, wenn Sie es nicht von 9999999998 unterscheiden können). In jedem Fall ist auf den meisten Systemen adouble
kann alle Ganzzahlen der gewünschten Größe genau speichern.– Robᵩ
29. April 2011 um 17:12 Uhr
Auf den meisten Systemen kann ein Double alle positiven ganzen Zahlen kleiner als 9007199254740993 genau speichern.
– Robᵩ
29. April 2011 um 17:34 Uhr
C hat viele Typen:
char, unsigned char, signed char, short, unsigned short, int, unsigned int, long, unsigned long, long long, unsigned long long, float, double, long double, void
Aufzählungen, Strukturen, Funktionen, Arrays und Zeiger auf all diese.– Muhende Ente
10. September 2015 um 1:39 Uhr