いくつかのデータとユーザー オプションに基づいて 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];
結果は・・・かなり悪かった・・・。