неправильный десятичный разделитель с NSDecimalNumber в iOS - PullRequest
4 голосов
/ 01 февраля 2012

Я попытался вывести описание десятичного числа с правильным десятичным разделителем следующим образом:

NSString* strValue = @"9.94300";
NSDecimalNumber* decimalNumber = [NSDecimalNumber decimalNumberWithString: strValue];    
NSLocale* locale = [NSLocale currentLocale];
NSLog(@"%@", [locale localeIdentifier]);
NSLog(@"%@", [decimalNumber descriptionWithLocale: locale] );

Вывод:

de_DE
9.943

Десятичный разделитель должен быть ',' вместо '.' для этой локали. Где ошибка? Как вывести правильный десятичный разделитель в зависимости от локального?

Ответы [ 2 ]

3 голосов
/ 02 февраля 2012

@ TriPhoenix: Да, я использую iOS 5.

@ Виньеш: Большое спасибо. Следующий код работает сейчас, если я установил для iPhone язык немецкий:

NSString* strValue = @"9.94300";
NSDecimalNumber* decimalNumber = [NSDecimalNumber decimalNumberWithString: strValue];    
NSNumberFormatter* numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setFormatterBehavior: NSNumberFormatterBehavior10_4];
[numberFormatter setNumberStyle: NSNumberFormatterDecimalStyle];
NSLog(@"%@", [numberFormatter stringFromNumber: decimalNumber] );

Вывод: 9943

Но теперь у меня есть другая проблема. Если я переключу язык iPhone обратно на английский, результат будет 9,943 вместо 9,943. Я делаю что-то не так?

1 голос
/ 06 августа 2012

Вы можете использовать это:

NSLocale *locale = [NSLocale currentLocale];

float r = 50/100;

NSString *str = [NSString stringWithFormat:@"%.2f%%", r];
str = [str stringByReplacingOccurrencesOfString:@"." withString:[locale objectForKey: NSLocaleDecimalSeparator]];

Это сработало!

...