531 Stimmen

Was ist der Unterschied zwischen float und double?

Ich habe über den Unterschied zwischen doppelter Präzision und einfacher Präzision gelesen. Allerdings in den meisten Fällen, float y double scheinen austauschbar zu sein, d. h. die Verwendung des einen oder des anderen scheint die Ergebnisse nicht zu beeinflussen. Ist dies wirklich der Fall? Wann sind Floats und Doubles austauschbar? Was sind die Unterschiede zwischen ihnen?

13voto

Anushil Kumar Punkte 601

Es gibt drei Gleitkommatypen:

  • Schwimmer
  • double
  • langes Doppel

Ein einfaches Venn-Diagramm wird dies erklären: Die Menge der Werte der Typen

enter image description here

12voto

Dolbz Punkte 2038

Die Größe der Zahlen, die an den Fließkommaberechnungen beteiligt sind, ist nicht der wichtigste Faktor. Entscheidend ist die Berechnung, die durchgeführt wird.

Wenn Sie eine Berechnung durchführen und das Ergebnis eine irrationale Zahl oder eine wiederkehrende Dezimalzahl ist, kommt es zu Rundungsfehlern, wenn diese Zahl in die von Ihnen verwendete Datenstruktur mit endlicher Größe gequetscht wird. Da double doppelt so groß ist wie float, ist der Rundungsfehler viel geringer.

Die Tests können speziell Zahlen verwenden, die diese Art von Fehler verursachen würden, und haben daher geprüft, ob Sie den entsprechenden Typ in Ihrem Code verwendet haben.

10voto

Zain Ali Punkte 14857

Typ float, 32 Bits lang, hat eine Genauigkeit von 7 Stellen. Er kann zwar Werte mit sehr großem oder sehr kleinem Bereich speichern (+/- 3,4 * 10^38 oder * 10^-38), hat aber nur 7 signifikante Stellen.

Typ double, 64 Bits lang, hat einen größeren Bereich (*10^+/-308) und eine Genauigkeit von 15 Ziffern.

Der Typ long double hat nominell 80 Bits, obwohl er bei einer bestimmten Compiler/OS-Paarung aus Gründen der Ausrichtung als 12-16 Bytes gespeichert werden kann. Der lange Double hat einen Exponenten, der einfach lächerlich groß ist und eine Genauigkeit von 19 Stellen haben sollte. Microsoft hat in seiner unendlichen Weisheit long double auf 8 Bytes begrenzt, genau wie plain double.

Im Allgemeinen sollten Sie den Typ double verwenden, wenn Sie eine Fließkommazahl/Variable benötigen. Literale Fließkommazahlen, die in Ausdrücken verwendet werden, werden standardmäßig als Doubles behandelt, und die meisten mathematischen Funktionen, die Fließkommazahlen zurückgeben, geben Doubles zurück. Sie ersparen sich viele Kopfschmerzen und Typwahlen, wenn Sie einfach double verwenden.

9voto

N 1.1 Punkte 12152

Fließkommazahlen haben eine geringere Genauigkeit als Doppelzahlen. Obwohl Sie es bereits wissen, lesen Sie Was wir über Fließkommaarithmetik wissen sollten zum besseren Verständnis.

3voto

Tuomas Pelkonen Punkte 7667

Bei der Verwendung von Fließkommazahlen können Sie nicht darauf vertrauen, dass Ihre lokalen Tests genau den Tests entsprechen, die auf der Serverseite durchgeführt werden. Die Umgebung und der Compiler sind auf Ihrem lokalen System wahrscheinlich anders als dort, wo die endgültigen Tests ausgeführt werden. Ich habe dieses Problem schon oft bei TopCoder-Wettbewerben gesehen, vor allem wenn Sie versuchen, zwei Fließkommazahlen zu vergleichen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X