Ich möchte die Genauigkeit für ein Double während eines Vergleichs steuern und dann mit C ++ auf die Standardpräzision zurückkommen.
Ich möchte setPrecision()
verwenden, um die Genauigkeit festzulegen. Was ist dann die Syntax, um die Genauigkeit auf den Standardwert zurückzusetzen?
Ich mache so etwas
%Vor%Ich mache ein paar Sachen, und ich möchte gleich danach zum Standard-Doppelvergleich zurückkehren.
Ich habe das geändert und habe immer noch einige Fehler
%Vor% mit cmath
false bei der Kompilierung und std::ios_base
auch falsch bei der Kompilierung. Könntest du helfen?
Danke.
Sie können die Genauigkeit vor erhalten, indem Sie sie ändern, mit std::ios_base::precision
und verwenden Sie diese dann, um sie später wieder zu ändern.
Sie können dies in Aktion sehen mit:
%Vor%welche Ausgaben:
%Vor% Der obige Code zeigt zwei Möglichkeiten zum Festlegen der Genauigkeit, indem Sie zuerst std::cout.precision (N)
und dann einen Stream-Manipulator std::setprecision(N)
aufrufen.
Aber Sie müssen bedenken, dass die Genauigkeit für Ausgabe Werte über Streams ist, es betrifft nicht direkt Vergleiche der Werte selbst mit Code wie:
%Vor% Mit anderen Worten, obwohl die Ausgabe 3.14159
sein kann, ist der Wert selbst immer noch der volle 3.141592653590
(natürlich abhängig von normalen Gleitkomma-Begrenzungen).
Wenn Sie das tun wollen, müssen Sie prüfen, ob es nahe genug ist und nicht gleich ist, mit Code wie:
%Vor% Sie müssen Ihre aktuelle Genauigkeit im Auge behalten und dann auf die gleiche Weise wiederherstellen, die mit Ihren Operationen mit der erforderlichen modifizierten Genauigkeit durchgeführt wurde. Dazu können Sie std :: ios_base :: precision : Die erste Syntax gibt den Wert des aktuellen Fließkomma-Präzisionsfelds für den Stream zurück.
Die zweite Syntax setzt es auch auf einen neuen Wert.
setprecision () kann nur für Ausgabeoperationen verwendet werden und kann nicht für Vergleiche verwendet werden
Um Floats zu vergleichen, sagen wir a und b, müssen Sie das explizit so machen:
%Vor%Tags und Links c++ rounding floating-point default precision