Frage

Ich mag meine NSNumberFormatter ändern von der Anzeige negative Zahlen mit Klammern um sie auf das Minuszeichen vor zu setzen (oder was auch immer der lokalisierte Standard ist).

Ich nehme ich mit setNegativeFormat dies tun könnte:

aber oh Apple so gründlich docs lesen Ich verließ mein Kopf kratzen:


setNegativeFormat:

Legt das Format der Empfänger nutzt negative Werte angezeigt werden soll.

- (void)setNegativeFormat:(NSString *)aFormat

Parameter CFormatieren Eine Zeichenfolge, die das Format für negative Werte angibt.

Verfügbarkeit Erhältlich in iPhone OS 2.0 und höher.

Siehe auch - negativeFormat

Erklärt In NSNumberFormatter.h


Was sind meine Optionen für CFormatieren?!? C'mon Doc Writers, würde hier ein Link zu töten Sie?

edit: für das, was es wert ist hier die Erklärung:

NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];

Es ist mir wichtig, das lokale Währungssymbol & Dezimalstellen zu behalten, was auch immer sie sein mag. So [CurrencyFormatter setNegativeFormat: @ „- #, ## 0.00“] wahrscheinlich nicht funktionieren wird als Währung fehlt und 2 Dezimalstellen kann nicht für alle Währungen übernommen werden.

War es hilfreich?

Lösung

Wenn Sie einen Blick auf die "Format Strings" in der Datenformatierung Programmierhandbuch für Cocoa :

  

Das Format-String verwendet die Formatmuster aus der Unicode Technical Standard # 35 (diese Referenz auf Version tr35-6; Formatierer für Mac OS X v10.4 Verwendung Version tr35-4 ).

Edit:

Wenn Sie einen Format-String auf Währungen basierte festlegen möchten, können Sie die ¤ Zeichen verwenden, zum Beispiel:

[formatter setFormat:@"¤#,##0.00"];

Dies wird das Währungssymbol für die aktuelle Lokalisierung anstelle des ¤ Charakter.

Daher das gleiche Konzept mit dem negativen Format-String-Anwendung:

[formatter setFormat:@"-¤#,##0.00"];

Dies wird auch das Währungssymbol anstelle des ¤ für die aktuelle Lokalisierung gilt.

Andere Tipps

OK, so die Antwort, die ich hatte Arbeit ist:

[currencyFormatter setNegativeFormat:@"-¤#,##0.00"];

ist der Schlüssel dieses whatzit? Zeichen "¤". Keine Ahnung, was es heißt? jemand? aber es stellt die lokalisierte Währung in diesen Formatstrings ...

In diesem Fall ist es sucht nach einem Format NSString. hier für String-Format suchen Details .

Wenn Sie das Negativ 12,345.67 wollen als -12,345.67 angezeigt wird, dann glaube ich, der richtige NSString Wert @"-#,##0.00" ist

ich auch festgestellt, den folgenden Satz in dem Dokument verknüpft oben:

  

Wenn Sie nicht angeben, ein Format für   negative Werte angegeben das Format   für positive Werte verwendet wird, voran   durch ein Minuszeichen (-)

.

EDIT:
Update für 10.4 und nach: Hier beschreibt Verhalten ein PDF in 10.4 und nach
Und wie aus dem Dokument verknüpft, hier ist der Daten über die erforderlichen Format für 10.4 und nach .
Aus diesem Dokument scheint es, die richtige Zeichenfolge sein kann: @"-#,##0.##"

Alle Antworten gegeben annehmen, dass die Währung auf zwei Dezimalstellen ist und auch Kommas als Tausendertrennzeichen verwendet. Offensichtlich gibt es eine Reihe von Währungen, die nicht diesem Standard entsprechen, http://en.wikipedia.org / wiki / Decimal_mark , so verwende ich die folgende Technik

    NSString * formattedBalance = [currencyFormatter stringFromNumber:balance];
    if([formattedBalance rangeOfString:@"("].location != NSNotFound ) {
        formattedBalance = [NSString stringWithFormat:@"-%@",[[formattedBalance stringByReplacingOccurrencesOfString:@")" withString:@"" ]stringByReplacingOccurrencesOfString:@"(" withString:@"" ]];
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top