single
Doppelpräzisionszahlen
Swipe um das Menü anzuzeigen
Die Genauigkeit von float (7 Dezimalstellen) reicht nicht immer aus. Aber C++ bietet eine Lösung: double. Mit einer Genauigkeit von 15 Dezimalstellen ist es deutlich präziser als float. Die Syntax für die Verwendung von double bleibt unverändert:
double.
1double num = 3.14159265359;
Standardmäßig gibt cout Fließkommazahlen mit einer Genauigkeit von 6 signifikanten Stellen aus. Daher ist kein Unterschied zwischen float und double sichtbar. Um eine höhere Genauigkeit einzustellen, kann erneut std::cout << std::setprecision(15); verwendet werden (dies setzt die Genauigkeit auf 15 signifikante Stellen).
Nicht vergessen, <iomanip> einzubinden, um std::setprecision() nutzen 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 höhere Genauigkeit bei double erreicht?
Es wird einfach mehr Speicher verwendet. Ein float-Typ belegt 4 Byte, während ein double 8 Byte Speicher benötigt.
Es gibt auch einen long double-Typ. Seine Größe reicht von 8 Byte (wie ein double) bis zu 16 Byte. Die Größe von long double auf Ihrem System kann mit folgendem Code überprüft werden:
sizeof.h
1std::cout << sizeof(long double);
Zusätzlich sollte beim Zuweisen eines Wertes ein L hinzugefügt werden (andernfalls wird der Wert mit der Genauigkeit von double zugewiesen). Siehe das Beispiel:
double.h
1long double pi = 3.141592653589793238462643L;
Wenn im Ausgabefeld Nullen erscheinen, stellen Sie sicher, dass Sie die Werte genau wie oben gezeigt zugewiesen haben (1/3., 1/3.L).
Swipe to start coding
Sie sollen (1/3)² mit verschiedenen Datentypen berechnen. Weisen Sie dazu den Wert 1/3 Variablen vom Typ float, double und long double zu. Geben Sie anschließend diese Zahlen jeweils mit sich selbst multipliziert aus.
- 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 doublebelegt auf unserem System 16 Byte Speicher - Setzen Sie die Ausgabepräzision auf 25 Dezimalstellen mit
setprecision(25); - Geben Sie alle diese Werte jeweils mit sich selbst multipliziert aus.
Lösung
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