Doppelpräzisionszahlen
Die Genauigkeit von float
(7 Dezimalstellen) reicht nicht immer aus. Aber C++ hat eine Lösung: double
. Mit einer Genauigkeit von 15 Dezimalstellen ist es viel genauer als float
. Die Syntax für die Verwendung von double ist wie immer:
double.double
1double num = 3.14159265359;
Standardmäßig gibt cout
Gleitkommazahlen mit einer Genauigkeit von 6 signifikanten Stellen aus. Auf diese Weise sehen Sie keinen Unterschied zwischen float
und double
. Um eine größere Genauigkeit einzustellen, können wir erneut std::cout << std::setprecision(15);
verwenden (dies setzt die Genauigkeit auf 15 signifikante Stellen).
Vergessen Sie nicht, <iomanip>
einzuschließen, um std::setprecision()
verwenden zu können.
main.cpp
123456789101112131415#include <iostream> #include <iomanip> int main() { float pi_float = 3.14159265358979; double pi_double = 3.14159265358979; std::cout << "float pi: " << pi_float << std::endl; std::cout << "double pi: " << pi_double << std::endl; std::cout << std::setprecision(15); std::cout << "float pi with setprecision: " << pi_float << std::endl; std::cout << "double pi with setprecision: " << pi_double << std::endl; }
Wie wird eine bessere Genauigkeit in double
erreicht?
Es benötigt einfach mehr Speicher. Ein float
-Typ benötigt 4 Bytes, und ein double
benötigt 8 Bytes Speicher.
Es gibt auch einen long double
-Typ. Seine Größe reicht von 8 Bytes (genau wie ein double) bis zu 16 Bytes. Sie können die Größe des long double
auf Ihrem System mit folgendem Code überprüfen:
sizeof.h
1std::cout << sizeof(long double);
Zusätzlich sollten Sie ein L
zu einem Wert hinzufügen, den Sie zuweisen (ansonsten wird der Wert mit der Genauigkeit von double
zugewiesen). Schauen Sie sich das Beispiel an:
double.h
1long double pi = 3.141592653589793238462643L;
Hinweis
Wenn Sie Nullen im Ergebnis erhalten, stellen Sie sicher, dass Sie die Werte genau wie oben gezeigt zugewiesen haben (
1/3.
,1/3.L
).
Swipe to start coding
Sie müssen (1/3)² mit verschiedenen Datentypen berechnen. Dazu weisen Sie den Wert von 1/3 den Variablen vom Typ float
, double
und long double
zu. Dann drucken Sie diese Zahlen, multipliziert mit sich selbst.
- Initialisieren Sie eine
float
-Variable mit dem Wert1/3.
; - Initialisieren Sie eine
double
-Variable mit dem Wert1/3.
; - Initialisieren Sie eine
long double
-Variable mit dem Wert1/3.L
.
Hinweis:long double
belegt 16 Bytes Speicher auf unserem System - Setzen Sie die Ausgabepräzision auf 25 Dezimalstellen mit
setprecision(25)
; - Drucken Sie alle diese Werte, multipliziert mit sich selbst.
Lösung
solution.cpp
Danke für Ihr Feedback!
single
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen
Awesome!
Completion rate improved to 4.35
Doppelpräzisionszahlen
Swipe um das Menü anzuzeigen
Die Genauigkeit von float
(7 Dezimalstellen) reicht nicht immer aus. Aber C++ hat eine Lösung: double
. Mit einer Genauigkeit von 15 Dezimalstellen ist es viel genauer als float
. Die Syntax für die Verwendung von double ist wie immer:
double.double
1double num = 3.14159265359;
Standardmäßig gibt cout
Gleitkommazahlen mit einer Genauigkeit von 6 signifikanten Stellen aus. Auf diese Weise sehen Sie keinen Unterschied zwischen float
und double
. Um eine größere Genauigkeit einzustellen, können wir erneut std::cout << std::setprecision(15);
verwenden (dies setzt die Genauigkeit auf 15 signifikante Stellen).
Vergessen Sie nicht, <iomanip>
einzuschließen, um std::setprecision()
verwenden zu können.
main.cpp
123456789101112131415#include <iostream> #include <iomanip> int main() { float pi_float = 3.14159265358979; double pi_double = 3.14159265358979; std::cout << "float pi: " << pi_float << std::endl; std::cout << "double pi: " << pi_double << std::endl; std::cout << std::setprecision(15); std::cout << "float pi with setprecision: " << pi_float << std::endl; std::cout << "double pi with setprecision: " << pi_double << std::endl; }
Wie wird eine bessere Genauigkeit in double
erreicht?
Es benötigt einfach mehr Speicher. Ein float
-Typ benötigt 4 Bytes, und ein double
benötigt 8 Bytes Speicher.
Es gibt auch einen long double
-Typ. Seine Größe reicht von 8 Bytes (genau wie ein double) bis zu 16 Bytes. Sie können die Größe des long double
auf Ihrem System mit folgendem Code überprüfen:
sizeof.h
1std::cout << sizeof(long double);
Zusätzlich sollten Sie ein L
zu einem Wert hinzufügen, den Sie zuweisen (ansonsten wird der Wert mit der Genauigkeit von double
zugewiesen). Schauen Sie sich das Beispiel an:
double.h
1long double pi = 3.141592653589793238462643L;
Hinweis
Wenn Sie Nullen im Ergebnis erhalten, stellen Sie sicher, dass Sie die Werte genau wie oben gezeigt zugewiesen haben (
1/3.
,1/3.L
).
Swipe to start coding
Sie müssen (1/3)² mit verschiedenen Datentypen berechnen. Dazu weisen Sie den Wert von 1/3 den Variablen vom Typ float
, double
und long double
zu. Dann drucken Sie diese Zahlen, multipliziert mit sich selbst.
- Initialisieren Sie eine
float
-Variable mit dem Wert1/3.
; - Initialisieren Sie eine
double
-Variable mit dem Wert1/3.
; - Initialisieren Sie eine
long double
-Variable mit dem Wert1/3.L
.
Hinweis:long double
belegt 16 Bytes Speicher auf unserem System - Setzen Sie die Ausgabepräzision auf 25 Dezimalstellen mit
setprecision(25)
; - Drucken Sie alle diese Werte, multipliziert mit sich selbst.
Lösung
solution.cpp
Danke für Ihr Feedback!
Awesome!
Completion rate improved to 4.35single