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. Dadurch 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> muss eingebunden werden, 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 bessere Genauigkeit bei double erreicht?
Es wird einfach mehr Speicher verwendet. Ein float-Typ belegt 4 Byte, und ein double belegt 8 Byte Speicher.
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 können Sie mit folgendem Code überprüfen:
sizeof.h
1std::cout << sizeof(long double);
Zusätzlich sollte L zu einem Wert hinzugefügt werden, den Sie zuweisen (ansonsten wird der Wert mit der Genauigkeit von double zugewiesen). Siehe das Beispiel:
double.h
1long double pi = 3.141592653589793238462643L;
Wenn im Output Nullen erscheinen, stelle sicher, dass du die Werte genau wie oben gezeigt zuweist (1/3., 1/3.L).
Wischen, um mit dem Codieren zu beginnen
Sie sollen (1/3)² mit verschiedenen Datentypen berechnen. Weisen Sie dazu den Wert 1/3 Variablen der Typen float, double und long double zu. Geben Sie anschließend diese Zahlen, jeweils mit sich selbst multipliziert, aus.
- Initialisierung einer
float-Variablen mit dem Wert1/3.; - Initialisierung einer
double-Variablen mit dem Wert1/3.; - Initialisierung einer
long double-Variablen mit dem Wert1/3.L.
Hinweis:long doublebelegt auf unserem System 16 Byte Speicher - Festlegung der Ausgabegenauigkeit auf 25 Dezimalstellen mit
setprecision(25); - Ausgabe aller dieser Werte, jeweils mit sich selbst multipliziert.
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