8

NSNumberformatterを、括弧で囲まれた負の数を表示することから、マイナス記号を前に置くこと(またはローカライズされた標準が何であれ)に変更したいと思います。

setNegativeFormatでこれを実行できると思います。

しかし、Appleの非常に徹底的なドキュメントを読んで、私は頭を悩ませたままになっています:


setNegativeFormat:

レシーバーが負の値を表示するために使用する形式を設定します。

- (void)setNegativeFormat:(NSString *)aFormat

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

可用性 iPhoneOS2.0以降で利用できます。

関連項目 –negativeFormat

NSNumberFormatter.hで宣言されています


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

編集:ここに価値があるもののために宣言があります:

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

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

4

4 に答える 4

2

OK、それで私が働いた答えは:

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

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

于 2009-06-18T08:05:31.407 に答える
1

与えられたすべての回答は、通貨が小数点以下 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:@"" ]];
    }
于 2014-07-10T16:06:26.353 に答える
1

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

12,345.67の負をとして表示したい場合-12,345.67、正しい NSString 値は@"-#,##0.00"

また、上記のリンク先のドキュメントに次の文があることにも注意しました。

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

編集:
10.4 以降の更新: ここに 10.4 以降の動作を説明する PDF があります
。また、そのドキュメントからリンクされているように、10.4 以降に必要な形式に関するデータは次のとおりです。
このドキュメントから、正しい文字列は次のようになります。@"-#,##0.##"

于 2009-06-18T07:18:55.493 に答える