Uygulamam parasal değerleri kullanıyor ve bu değerleri iPhone'da ayarladığı para birimi ve biçimlerinde temsil etmek istiyorum, ancak test yaparken Alman EURO formatı ile sorun yaşıyorum.NSLocale kullanarak NSDecimalNumber ile Euro biçiminde iPhone Para Birimi ile hata?
Para birimi biçimlendirilmiş dizeden bir ondalık sayı (çekirdek veri depolamak için) döndüren bir yöntem var. Dize aslında NSlocale kullanılarak başka bir (benzer) yöntemle biçimlendirildi.
Birleşik Krallık, ABD, Japon ve Alman yerelleriyle test ettim, şimdiye kadar sadece Almanya herhangi bir soruna neden oldu. Tüm oysa -18446912453607470532000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
: 2,56 €
+ (NSDecimalNumber*)TLCurrencyFormatFromString:(NSString*)strNumber {
NSNumberFormatter *fmtrCurrencyFromStr = nil;
fmtrCurrencyFromStr = [[NSNumberFormatter alloc] init];
[fmtrCurrencyFromStr setFormatterBehavior:NSNumberFormatterBehavior10_4];
[fmtrCurrencyFromStr setLocale:[NSLocale currentLocale]];
[fmtrCurrencyFromStr setNumberStyle:NSNumberFormatterCurrencyStyle];
[fmtrCurrencyFromStr setGeneratesDecimalNumbers:YES];
NSLog(@"Currency Separator: %@", [fmtrCurrencyFromStr decimalSeparator]); //prints a comma
NSLog(@"Currency Code: %@", [fmtrCurrencyFromStr currencyCode]); //prints EUR
int currencyScale = [fmtrCurrencyFromStr maximumFractionDigits];
NSDecimalNumberHandler *roundingBehavior = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundPlain scale:currencyScale raiseOnExactness:FALSE raiseOnOverflow:TRUE raiseOnUnderflow:TRUE raiseOnDivideByZero:TRUE];
NSDecimalNumber* currencyNumber = [[NSDecimalNumber alloc] initWithDecimal:[[fmtrCurrencyFromStr numberFromString:strNumber] decimalValue]];
NSLog(@"Currency Number = %@", [currencyNumber decimalNumberByRoundingAccordingToBehavior:roundingBehavior]);
return [currencyNumber decimalNumberByRoundingAccordingToBehavior:roundingBehavior];
}
'currencyNumber' değişken olarak basılmış alır: Burada
kod, geçirilen dize örneğin şöyledir Diğer yereller, NSDecimalNumber olarak Core Data'ya saklamak için 2.56 basardı.