0

いくつかのデータとユーザー オプションに基づいて NSNumber をフォーマットする必要があります。最初に、ユーザーはグループ区切り記号 (「,」または「.」またはなし) を選択する必要があります。グループ区切り記号が「,」の場合、小数点区切り記号は「.」になります。、およびその逆...数値は、国際通貨コード(ドルの場合はUSD、ユーロの場合はEURなど)で保存される通貨です...通貨に記号がある場合は、数値の前に置く必要がありますコードがそれを置き換えるわけではありません。

したがって、1234.50 は $ 1,234.50 のように見えるはずです -- 通貨が USD で、グループ化セパレータが "," $ 1.234,50 の場合 -- セパレータが "." に設定されている場合 通貨コードが RON (通貨記号がない) の場合は RON 1,234.50 ... NSNumberFormatter は iPhone の設定に依存していることを理解しています ... ユーザーはアプリ内で形式を変更できるため、ここでは当てはまらない可能性があります。 ..これを行う方法はありますか?

私は試した

- (NSString *)getFormatedNumber:(NSNumber *)number withCurrency:(NSString *)currencyAbrev andMode:(NSUInteger)mode
{

    NSNumberFormatter *formater = [[NSNumberFormatter alloc] init];

    [formater setCurrencyCode:currencyAbrev];

    if (mode == 1) {
        [formater setGroupingSize:3];
        [formater setGroupingSeparator:@","];
    }else {
        [formater setGroupingSeparator:@"."];
        [formater setGroupingSize:3];
    }



    return [formater stringFromNumber:number];
}

これらは呼び出しです

 self.label1.text = [[PSCurrencyDisplay sharedInstance] getFormatedNumber:[NSNumber numberWithDouble:12345.67f] withCurrency:@"USD" andMode:1];
    self.label2.text = [[PSCurrencyDisplay sharedInstance] getFormatedNumber:[NSNumber numberWithDouble:12345.67f] withCurrency:@"EUR" andMode:2];

結果は・・・かなり悪かった・・・。

4

0 に答える 0