2008-11-02 11 views
21

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?

+0

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. –

+16

Ein Triple! (bah dum, chh!) – Thanatos

Antwort

28

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.

2

lang doppelt, aber es ist in der Regel immer noch 15 Stellen der Genauigkeit zu.

3

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.

2

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.

8

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.

+1

Warum wurde das abgelehnt? Ist es falsch? –

2

lange lange Doppel nur einige CPUs ermöglicht es Ihnen, es aber zu verwenden ...