Ich habe einiOS Objective-C Wie erhalten Sie 2 Dezimal gerundet Float-Wert?
float a = 1412.244019;
und ich brauche ein wie 1412,24000000 auf die nächste zweite Dezimalstelle gerundet werden. Ich verstehe, dass, wenn ich ein mit nur zwei Dezimalstellen darstellen möchte, ich% .2f verwende, aber das ist NICHT der Fall. Ich brauche das neue a aus mathematischen Gründen als Float.
Ich habe ein paar Methoden auf Stackoverflow ohne Glück versucht. Der offensichtlichste, den ich benutzte, erwähne ich unten, hatte aber immer noch kein Glück dabei. Kannst du sehen, warum die Magie nicht passiert?
PS: Es macht den manchmal gewünschten Effekt, nicht immer, was ich denken wird ... hmmm ...
Vielen Dank im Voraus.
Code:
float a = 1412.244019;
NSLog(@"a is %f", a); //output a is 1412.244019
a = [[NSString stringWithFormat:@"%.2f", a] floatValue];
NSLog(@"a is %f", a); //output a is 1412.239990
EDIT:
wie SCHEINT, wenn ich den Schwimmer einen nach der obigen Operation verwenden, es erwägt, es 1.412,240000 zu sein obwohl die NSLog anders sagt ... seltsam. Aber ich bin immer, was ich will, so Kudos für vergeudete Zeit nichts jagen :)
EDIT ich Sie alle richtigen Antworten lieben würde, zu wählen, aber da ich nur einen auswählen kann, wählte ich die erste gute Antwort mit extra Erklärung (der beiden letzten).
Haben Sie es versucht, Sah Sie diese Methode in einem anderen Beitrag gepostet. Aber der NSLog gibt immer noch die gleiche Antwort (versuchen Sie es selbst). Aber siehe oben EDIT. Obwohl der NSLog das "falsche" Format angibt, wird es korrekt verwendet. –
Wie ich in der Bearbeitung gesagt habe, ist es unmöglich, volle Genauigkeit in Float-Punkten zu bekommen –
Ich verstehe. Es berechnet es so, wie ich es möchte. Ich denke nur, dass das merkwürdig ist, weil Sie dann niemals genaue Arithmetik anwenden können? –