Gibt es einen nativen C++ - Variablentyp, der "größer" ist als ein Double?
Float ist 7
Double ist 15 (natürlich abhängig vom Compiler)
Gibt es etwas Größeres, das nativ ist, oder sogar nicht-native?Was ist größer als ein Doppel?
Antwort
C++ hat long double
, aber es gibt keine Garantie, dass es genauer ist als ein einfacher double
. Auf einer x86-Plattform sind normalerweise double
64 Bit und long double
entweder 64 oder 80 Bit (was 19 signifikante Zahlen ergibt, wenn ich mich recht erinnere).
Ihre Laufleistung kann variieren, besonders wenn Sie nicht auf x86 sind.
lang doppelt, aber es ist in der Regel immer noch 15 Stellen der Genauigkeit zu.
Es gibt auch einige verschiedene Bigfloat/Bigint-Bibliotheken für C++, die eine beliebig genaue Mathematik ermöglichen. Es gibt this Bibliothek auf Microsoft Codeplex, aber Googling finden Sie viele andere.
Sie können GNU MP verwenden. Seine floating-point functions haben unbegrenzte Mantisse und 32-Bit oder 64-Bit (abhängig von der nativen Wortgröße) Exponent. Es kommt auch mit einem C++ wrapper.
C++ hat lange doppelte, aber es ist immer noch sehr begrenzt. Probieren Sie GNU's gmp library aus. Sie können Zahlen so groß wie Sie möchten, und es ist ziemlich lustig und hackishly, wenn Sie gmp_add anstelle von einem normalen + verwenden. Ich bin mir sicher, dass es irgendwo einen C++ - Wrapper gibt.
Eine lange doppelte verwendet in der Regel nur 10 Bytes, aber aufgrund der Ausrichtung möglicherweise tatsächlich 12 oder 16 (abhängig von den Compiler und Optionen) Bytes in einer Struktur.
Das 10 Byte lange Double liefert eine 64-Bit-Mantisse; Dies ist sehr praktisch, wenn Sie 64-Bit-Ganzzahlen in Gleitkomma ohne Genauigkeitsverlust speichern möchten.
Warum wurde das abgelehnt? Ist es falsch? –
lange lange Doppel nur einige CPUs ermöglicht es Ihnen, es aber zu verwenden ...
-Boost 1,53 oder höher mehrfach hat.
http://www.boost.org/doc/libs/1_54_0/libs/multiprecision/doc/html/index.html
Ich denke, in der Regel von Schwimmer als 4 und doppelt so 8, aber Sie sind auf die ungefähre Anzahl der Dezimalstellen bezieht, während ich verwendet, um die Anzahl von Bytes mich beziehe. –
Ein Triple! (bah dum, chh!) – Thanatos