質問

NSNumberformatterを、括弧で囲まれた負の数値の表示から、マイナス記号の前(またはローカライズされた標準)に変更します。

setNegativeFormatでこれを行うことができると仮定します:

しかし、Appleの非常に徹底的なドキュメントを読んで、頭をかきむしられています:


setNegativeFormat:

受信者が負の値を表示するために使用する形式を設定します。

- (void)setNegativeFormat:(NSString *)aFormat

パラメータ aFormat 負の値の形式を指定する文字列。

可用性 iPhone OS 2.0以降で使用可能。

関連項目 – negativeFormat

宣言済み NSNumberFormatter.h


aFormatのオプションは何ですか?!? C'mon Doc Writers、ここのリンクはあなたを殺しますか?

編集:ここでの価値があるのは宣言です:

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

ローカライズされた通貨記号を保持することが重要です&小数点以下は何でもかまいません。したがって、通貨が欠落しているため[currencyFormatter setNegativeFormat:@"-#、## 0.00"]はおそらく機能せず、すべての通貨で小数点以下2桁を想定することはできません。

役に立ちましたか?

解決

"フォーマット文字列"を見ると、 のセクションCocoaのデータフォーマットプログラミングガイド

  

フォーマット文字列は、 Unicode Technical Standard#35 (この参照はバージョンtr35-6で、Mac OS X v10.4のフォーマッタはバージョン tr35-4 )。

編集:

通貨に基づいてフォーマット文字列を設定する場合、¤ 文字を使用できます。例:

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

これにより、¤ 文字の代わりに現在のローカライズの通貨記号が追加されます。

したがって、同じ概念を負のフォーマット文字列に適用します:

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

これにより、現在のローカライズの¤ の代わりに通貨記号も適用されます。

他のヒント

OK、だから私が働いて得た答えは:

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

鍵はこのwhatzitですか?文字"¤"。それが何と呼ばれているのか分かりませんか?誰でも?しかし、これらのフォーマット文字列でローカライズされた通貨を表します...

この場合、フォーマットNSStringを探しています。 フォーマット文字列の詳細についてはこちらをご覧ください

>

12,345.67 のネガを -12,345.67 として表示する場合、正しいNSString値は @"-#、## 0.00であると思います"

また、上記のリンク先のドキュメントには次の文が記載されています:

  

次の形式を指定しない場合   負の値、指定された形式   前に正の値が使用されます   マイナス記号(-)で。

編集:
10.4以降の更新:必要なデータがあります10.4以降の形式
この文書から、正しい文字列は次のように思われます: @"-#、## 0。##"

すべての回答は、通貨が小数点以下2桁であり、千の区切り文字としてコンマを使用することを前提としています。明らかに、この標準に準拠していない通貨が多数あります。 http://en.wikipedia.org / wiki / Decimal_mark 、次のテクニックを使用します

    NSString * formattedBalance = [currencyFormatter stringFromNumber:balance];
    if([formattedBalance rangeOfString:@"("].location != NSNotFound ) {
        formattedBalance = [NSString stringWithFormat:@"-%@",[[formattedBalance stringByReplacingOccurrencesOfString:@")" withString:@"" ]stringByReplacingOccurrencesOfString:@"(" withString:@"" ]];
    }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top