0

次の NSNumberFormatter を使用して、通貨値にコンマと記号を追加しています。

self.currencyFormatter = [NSNumberFormatter new];
self.currencyFormatter.numberStyle = NSNumberFormatterCurrencyStyle;
self.currencyFormatter.currencySymbol = @"£";
self.currencyFormatter.currencyCode = @"GBP";
self.currencyFormatter.roundingMode = NSNumberFormatterRoundHalfUp;
self.currencyFormatter.maximumFractionDigits = 0;

使用法:

self.principleAmountTextField.text = [self.currencyFormatter stringFromNumber:[NSNumber numberWithInteger:100000]];

これにより、予想どおり£100,000が表示されます。テキストフィールドにさらに2桁(テキストは£100,00096になります)を挿入し、文字列を整数に変換しようとすると、0が得られます! 基本的に、次の行は 0 を返します。この問題に対処する方法がわかりません。

NSLog(@"%d", [[self.currencyFormatter numberFromString:@"£100,00096"] integerValue]);

参考までに、テキストフィールドに数値を入力できるようにするテキストフィールドへのカスタムinputviewがあります。Did Edit Endでも、数値をフォーマットしてカンマで表示します。

4

3 に答える 3

1

これを機能させるにはコンマを削除する必要があります。テキスト フィールドにコンマを表示することはできますが、文字列をフォーマッタに渡す前にコンマを削除する必要があります。このようなもの:

NSString *userInput = @"£100,00096";    
userInput = [userInput stringByReplacingOccurrencesOfString:@"," withString:@""];
NSLog(@"%ld", (long)[[currencyFormatter numberFromString:userInput] integerValue]);
于 2013-07-23T20:13:14.627 に答える
0

100,00096正しくない...

これらのいずれかを意味しますか?

[[self.currencyFormatter numberFromString:@"£10000096"] integerValue]
[[self.currencyFormatter numberFromString:@"£100,000.96"] integerValue]
[[self.currencyFormatter numberFromString:@"£100000.96"] integerValue]
[[self.currencyFormatter numberFromString:@"£10,000,096"] integerValue]
于 2013-07-23T20:00:24.797 に答える
0

参照用の私の最終的なコード。通貨記号付きの数字も無効です! 以下はすべてを処理します。

    NSCharacterSet *doNotWant = [NSCharacterSet characterSetWithCharactersInString:[NSString stringWithFormat:@"%@%@", self.currencyFormatter.groupingSeparator, self.currencyFormatter.currencySymbol]];
    self.amountTextField.text = [[self.amountTextField.text componentsSeparatedByCharactersInSet:doNotWant] componentsJoinedByString:@""];
    self.amountTextField.text = [NSString stringWithFormat:@"£%@", self.amountTextField.text];
    NSUInteger amount = [[self.currencyFormatter numberFromString:self.amountTextField.text] integerValue];
    self.amountTextField.text = [self.currencyFormatter stringFromNumber:[NSNumber numberWithInteger:amount]]
于 2013-07-25T14:28:22.113 に答える