Gleitkommazahl begrenzen?

8

Gibt es eine Möglichkeit, Gleitpunkte auf 2 Punkte zu runden? Zum Beispiel: 3576.7675745342556 wird 3576.76 .

    
jmasterx 01.08.2010, 21:29
quelle

9 Antworten

12
%Vor%

Wenn Sie die Dinge schweben lassen müssen:

%Vor%

Flexible Version mit Standard-Bibliotheksfunktionen:

%Vor%     
strager 01.08.2010, 21:29
quelle
13

Wenn Sie es ausdrucken, verwenden Sie stattdessen die Druckformatierungsfunktion, die Ihnen zur Verfügung steht.

In C ++

%Vor%

Verwenden Sie std :: ostringstream

zum Runden, um auf der grafischen Benutzeroberfläche zu rendern     
carlsborg 01.08.2010 21:54
quelle
2

Multiplizieren Sie mit 100, runden mit Integer (wie auch immer Sie wollen), dividieren Sie durch 100. Beachten Sie, dass, da 1/100 nicht genau in Gleitkommazahlen dargestellt werden kann, feste Zahlen mit fester Genauigkeit in Betracht gezogen werden sollten.

    
Tassos Bassoukos 01.08.2010 21:30
quelle
2

Benutze keine Floats. Verwenden Sie Ganzzahlen, die die Anzahl der Cents speichern, und drucken Sie einen Dezimalpunkt vor den letzten 2 Stellen, wenn Sie Dollar drucken möchten. Floats sind fast immer falsch für Geld, es sei denn, Sie machen simple Berechnungen (wie naive ökonomisch-mathematische Modelle), bei denen nur die Größe der Zahlen eine Rolle spielt und nie benachbarte Zahlen subtrahiert werden.

    
R.. 02.08.2010 05:41
quelle
2

Für diejenigen unter euch, die googeln, um einen Float zu Geld zu formatieren, wie ich es war:

%Vor%

Sie müssen es als Zeichenfolge zurückgeben. Setzen Sie es in einen Schwimmer zurück, wird die Präzision verlieren.

    
xinthose 30.07.2015 19:05
quelle
0

Um die Genauigkeit zu begrenzen:
Wenn x ein float ist, keine Rundung:
(um 2 Dezimalstellen nach oben verschieben, den Bruch entfernen, um 2 Dezimalstellen nach unten verschieben)

%Vor%

Float mit Rundung:

%Vor%

Doppelt ohne Rundung:

%Vor%

Doppelt mit Rundung:

%Vor%

Hinweis: Da x entweder ein float oder ein double ist, ist der Bruchteil immer vorhanden. Es ist der Unterschied zwischen der Darstellung eines # ( IEEE 754 ) und der # Genauigkeit.
C99 unterstützt ​​round ()

    
Doug 06.08.2013 16:22
quelle
0

versuche es mit

std::cout<<std::setprecision(2)<<std::cout<<x;

sollte funktionieren und nur zwei Ziffern nach dem Fließkomma erscheinen.

    
Yassine Abdul-Rahman 24.07.2015 15:12
quelle
0

Versuchen Sie es, es funktioniert perfekt

%Vor%

Ändern Sie einige Objekte darin, um den Code zu sehen und zu lernen.

    
Adam Marsono Putra 15.10.2017 04:43
quelle
-5
%Vor%     
Controler 01.08.2010 21:53
quelle