Ich möchte wissen, ob es eine einfache Funktion gibt, mit der ich dieses Beispiel benutzen kann. Ich habe ein
%Vor%Ich möchte es mit etwas wie
umrunden %Vor% Und ich bekomme "1.123"
Gibt es irgendeine Library
oder Standardfunktion dafür oder ich sollte einen Codeblock für diese Art von Berechnungen schreiben?
danke für Ihre Hilfe im Voraus
Die Verwendung von NSLog(@"%f", theFloat)
gibt immer sechs Dezimalstellen aus, zum Beispiel:
Ausgabe:
%Vor% Mit anderen Worten, Sie werden niemals 1.123
erhalten, wenn Sie NSLog(@"%f", theFloat)
verwenden.
Cut-off nach drei Dezimalstellen:
%Vor%Ausgabe:
%Vor% Rund drei Dezimalstellen (mit roundf()
/ lroundf()
/ ceil()
/ floor()
):
Ausgabe:
%Vor%Rund um drei Dezimalstellen (schmutziger Weg):
%Vor%Ausgabe:
%Vor%Verwenden Sie zum Drucken des Wertes:
%Vor% Das Runden auf 3 Dezimalstellen vor Berechnungen ist nicht wirklich sinnvoll, weil float
keine genaue Zahl ist. Selbst wenn Sie es auf 1.123
runden, wird es so etwas wie 1.122999999998
sein.
Regeln:
NSDecimalNumber
oder Festkommaarithmetik. Fließkommazahlen haben keine Nachkommastellen, sie haben Binärstellen. Dezimalzahlen haben Dezimalstellen. Gleitkommazahlen können nicht auf bestimmte Dezimalstellen gerundet werden, es sei denn, Sie konvertieren in eine Dezimalzahl. Keine Routine, Methode, Funktion etc., dass einen Fließkommawert zurückgibt kann diese Aufgabe möglicherweise ausführen.
Beachten Sie, dass "Round" nicht unbedingt so einfach ist wie Sie denken. Zum Beispiel
DIY-Rechner: Rundungsalgorithmen 101 listet 16 verschiedene Methoden zum Runden einer Zahl auf.
Wikipedia: Das Runden umfasst eine Menge des gleichen Bodens
Und Cplusplus hat Quellcode für eine Reihe von Rundungsalgorithmen , die leicht in objective-c <übersetzbar sind / p>
Wie Sie runden möchten, hängt vom Kontext Ihrer Daten ab.
Und ich möchte darauf hinweisen, dass Stack Overflow bereits eine eine Fülle anderer Fragen zum Runden in objective-c
Hier ist eine einfache Möglichkeit:
%Vor%Bei einer beliebigen Dezimalstelle ersetzen Sie 1000.0f im obigen Code durch
%Vor%Tags und Links objective-c rounding floating-point