1
self.numberFormatter = [[NSNumberFormatter alloc] init];
[self.numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
[self.numberFormatter setCurrencySymbol:@""];
[self.numberFormatter setLocale:[NSLocale currentLocale]];
//In DataManager sharedClass .h 
- (void)setupCapital:(float)Capital;
- (float)readCapital;
(NSString*)formatCapital:(NSNumber *)Capital;

// In DataManager sharedClass .m
@property (assign, nonatomic) float theCapital;
- (NSString *) formatCapital:(NSNumber *)Capital {
return [self.numberFormatter stringFromNumber:Capital];
}

- (void)formatCapital:(float)Capital {
self.theCapital = Capital;
}

- (float) readCapital {
return self.theCapital;
}

// write the number
 float numberDecimal = [[DataManager sharedClass] readCapital];
self.labelCapital.text = [[DataManager sharedClass] formatCapital:[NSNumber numberWithFloat:numberDecimal]];

123456,89 を挿入すると、labelCapital に値 123.456,89 が正しく含まれる理由

1234567,89 を挿入すると、代わりに labelCapital 1.234.567,88 になります。

123456789,89 を挿入すると、代わりに labelCapital 123.456.792,00 になります。

ヒントはありますか?

4

2 に答える 2

6

そのコードを使用して解決しました:

self.numberFormatter = [[NSNumberFormatter alloc] init];
[self.numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
[self.numberFormatter setGroupingSize:3];
[self.numberFormatter setCurrencySymbol:@""];
[self.numberFormatter setLocale:[NSLocale currentLocale]];
[self.numberFormatter setMaximumFractionDigits:2];

float を double に変更する

また、最後の行を追加して、結果が 2 つの 10 進数のみになるようにしました

于 2012-11-06T06:41:42.263 に答える
2

文字列変数を通貨形式に変換するために、次のような単一の関数を使用できます。

  - (NSString *)convertToCommaSeparated:(NSString *)inputAmount{
    NSDecimalNumber *someAmount = [NSDecimalNumber decimalNumberWithString:inputAmount];
    NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
    [currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
    [currencyFormatter setCurrencyCode:@"USD"];
    [currencyFormatter setMaximumFractionDigits:2];
    [currencyFormatter setFormat:@"#,##0.00"];
    return [currencyFormatter stringFromNumber:someAmount];
}

注: 入力にコンマ (,) を含めないでください。この関数に渡す前にコンマを削除する必要があります。

于 2012-11-05T07:44:51.030 に答える