Ich habe den Wert 25.00
in a float
, aber wenn ich ihn auf dem Bildschirm drucke, ist es 25.0000000
.
Wie kann ich den Wert mit nur zwei Dezimalstellen anzeigen?
objective-c
formatting
floating-point
mskfisher
quelle
quelle
Antworten:
Es geht nicht darum, wie die Nummer gespeichert wird, sondern darum, wie Sie sie anzeigen. Wenn Sie es in eine Zeichenfolge konvertieren, müssen Sie auf die gewünschte Genauigkeit runden, in Ihrem Fall zwei Dezimalstellen.
Z.B:
%.02f
teilt dem Formatierer mit, dass Sie ein float (%f
) formatieren und, das auf zwei Stellen gerundet und mit0
s aufgefüllt werden soll .Z.B:
quelle
25
..@"%.f"
funktioniert der Trick. Was oben geschrieben steht, tut es nicht .@"%.*f", decimalPlaces, number
%03.f = 025
Hier sind einige Korrekturen
Swift 3
Obj-C
und so weiter...
quelle
Sie können auch versuchen, NSNumberFormatter zu verwenden:
Möglicherweise müssen Sie auch das Negativformat festlegen, aber ich denke, es ist klug genug, um es herauszufinden.
quelle
Ich habe eine schnelle Erweiterung basierend auf den obigen Antworten vorgenommen
Verwendung:
quelle
Wenn Sie in Swift Language zeigen möchten, müssen Sie es auf diese Weise verwenden. So weisen Sie UITextView einen doppelten Wert zu:
Wenn Sie in LOG wie in Objective-C mit NSLog () anzeigen möchten, können Sie in Swift Language Folgendes tun:
quelle
In Ziel-c können Sie, wenn Sie mit regulären Zeichen-Arrays (anstelle von Zeigern auf NSString) arbeiten, auch Folgendes verwenden:
OTOH, wenn Sie diesen Wert in einem char-Array speichern möchten, können Sie Folgendes verwenden:
quelle
Das Problem bei allen Antworten ist, dass das Multiplizieren und anschließende Teilen zu Präzisionsproblemen führt, da Sie die Division verwendet haben. Das habe ich vor langer Zeit durch Programmieren auf einem PDP8 gelernt. Der Weg, um dies zu beheben, ist:
Somit gibt 15.6578 nur 15.66 zurück und nicht 15.6578999 oder so etwas Unbeabsichtigtes.
Welche Präzision Sie wünschen, liegt bei Ihnen. Teilen Sie das Produkt nur nicht, sondern multiplizieren Sie es mit dem Dezimaläquivalent. Keine lustige String-Konvertierung erforderlich.
quelle
In Ziel -c möchten Sie den Gleitkommawert in einer 2-Dezimalzahl anzeigen und dann ein Argument übergeben, das angibt, wie viele Dezimalstellen Sie anzeigen möchten, z. B. 0,02f wird 25,00 ausgeben. 0,002f wird 25.000 drucken
quelle
Hier sind einige Methoden zum dynamischen Formatieren mit einer Genauigkeit:
z.B
=> 2,3453
=> 2
=> 2,35 (aufrunden)
quelle
Eine andere Methode für Swift (ohne Verwendung von NSString):
PS Diese Lösung funktioniert nicht mit CGFloat- Typen, die nur mit
Float
& getestet wurdenDouble
quelle
Verwenden Sie
NSNumberFormatter
mitmaximumFractionDigits
wie folgt:Und du wirst bekommen
12.35
quelle
Wenn Sie auch den Wert schweben lassen müssen:
quelle
quelle