setzt die Standardpräzision C ++ zurück

8

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.

    
octoback 24.09.2012, 07:03
quelle

3 Antworten

16

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%     
paxdiablo 24.09.2012, 07:10
quelle
3

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 : %Vor%

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.

    
Alok Save 24.09.2012 07:11
quelle
2

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%     
premprakash 24.09.2012 07:12
quelle