2010-11-02 3 views
5

Ich muss irgendwie Float-Werte mit einer Genauigkeit von zwei Dezimalstellen abzurunden, für Futhur Berechnung.Wie kann ich einen Schwimmer abrunden?

Zum Beispiel, wenn ich 0.1098 habe, brauche ich es, um 0.10 zu werden, und wenn ich 0.1176 habe, brauche ich das, um 0.11 zu werden.

Ziemlich viel ich denke, ich brauche meine Schwimmer auf 2 Dezimalstellen

Antwort

14

in der Regel trunkieren Sie Runden, wenn es in einen String konvertieren, da binäre Schwimmer können nicht immer genau zwei Nachkommastellen darstellen. Um eine NSString mit 2 Stellen zu erhalten, verwenden

[NSString stringWithFormat:@"%.02f", num]; 

Wenn Sie wirklich mit einem Schwimmer für die weitere Berechnung verkürzen möchten, verwenden Sie so etwas wie

((int)(num * 100))/100.0 

und wenn Sie anstelle von truncate runden möchten

((int)(num * 100 + 0.5))/100.0 
+0

Verdammt, so schnell auf die Antwort! Das ist übrigens die richtige Antwort. – Jim

+0

außer er möchte nicht abrunden, also nicht hinzufügen .5 –

+0

@jcomeau_ictx in der Tat, behoben. – cobbal