Kursinhalt
C++ Datentypen
C++ Datentypen
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 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
#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
std::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
long 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
Danke für Ihr Feedback!
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 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
#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
std::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
long 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
Danke für Ihr Feedback!