NSTimeInterval in lesbaren NSNumber
NSTimeInterval == double; (z.B. 169.12345666663)
Wie kann ich Runde diese verdoppeln, so dass es nur 2 Ziffern Links nach der "dot"?
Es wäre sehr gut, wenn das Ergebnis ist ein NSNumber.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn dies für die Anzeige, nehmen Sie einen Blick auf NSNumberFormatter.
Wenn Sie wirklich wollen, um Runde das Doppel in Ihre Berechnungen aus irgendeinem Grund, können Sie die standard-C -
round()
Funktion.Einen NSDecimal können gerundet werden, um eine angegebene Anzahl von stellen mit NSDecimalRound().
Wenn Sie wirklich wollen, zwei Ziffern Links nach dem Punkt, multipliziert mit 100, Runden mit round () - Funktion, teilen Sie durch 100 wieder. Dies wird jedoch nicht garantieren, dass es wirklich nur zwei Ziffern nach dem Punkt, da durch die Aufteilung wieder, Sie kann bekommen ein Zahl, die nicht wirklich ausgedrückt werden mit floating-point notation und wenn Sie erwarten, 0.1 können Sie in der Tat bekommen 0.09999..., das ist, weil Sie nicht wirklich Ausdrücken 0.1 Verwendung von Gleitkomma-notation.
Wenn Sie nur wollen, um Runde auf zwei stellen nach dem Punkt für die Anzeige, die Sie verwenden können, NSNumberFormatter wie vorgeschlagen wurde, oder verwenden Sie einfach:
oder um ein NSString, Sie können auch die folgende, die ist wahrscheinlich sogar schneller als ein NumberFormatter (jedoch nicht lokalisiert werden, die entsprechend den user-prefs):
In der überwiegenden Mehrzahl der Fälle Rundung einer Zahl ist etwas, das sollten Sie nur tun, zum Zeitpunkt der Anzeige. Die Eigenschaften von Fließkomma-zahlen (double oder nicht) machen es unmöglich, zu speichern bestimmter zahlen mit fester Genauigkeit.
Für Informationen über die Formatierung einer Zahl, so zeigt es auf zwei Dezimalstellen siehe dieser andere post.
Tut dies HumanReadableTimeInterval helfen? Es gibt einen NSString, obwohl.
Alternativ können Sie auch um sich durch die Multiplikation mit 100, - Umwandlung zu einer ganzen Zahl und dividiert durch 100 wieder.
Ich würde nur die ANSI-C
round()
Funktion.Können Sie immer auf die Zahl gerundet werden soll mit:
Aber die Chancen sind, dass die Darstellung des Ergebnis als double-nicht nur 2 Dezimalstellen.
Nun, wenn durch die Verwendung des = = - Zeichen, bedeutet Sie, dass der Vergleich der zwei double-zahlen wird nur auf die zweite dezimale. Hier ist was Sie tun können: