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.
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.
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)
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 ()
versuche es mit
std::cout<<std::setprecision(2)<<std::cout<<x;
sollte funktionieren und nur zwei Ziffern nach dem Fließkomma erscheinen.
Versuchen Sie es, es funktioniert perfekt
%Vor%Ändern Sie einige Objekte darin, um den Code zu sehen und zu lernen.
Tags und Links algorithm c c++ floating-point floating-point-conversion