Несколько более мощный способ сделать это - использовать NSNumberFormatter.Это дает вам гораздо больше гибкости в определении того, как вы хотите, чтобы число было представлено, за счет сложности:
NSNumberFormatter *oFmt = [[[NSNumberFormatter alloc] init] autorelease];
[oFmt setNumberStyle:NSNumberFormatterDecimalStyle];
[oFmt setMaximumFractionDigits:2];
[oFmt setMinimumFractionDigits:2]; //Fix to 2 places
NSNumber *oNum = [NSNumber numberWithDouble:[[[articles objectAtIndex:9] objectForKey:@"Value"] doubleValue]];
usd.text = [oFmt stringFromNumber:oNum];
Обновление 1: у вас есть проблема локализации.Функция floatValue захлебнулась вашим числом, 29,3508, потому что ваш десятичный знак неверен (форматировщик ожидает 29,3508 вместо 29,3508, что является распространенным во Франции и т. Д.).Вот почему функция floatValue отключит что-либо после 29, вызывая вашу проблему.
Чтобы это исправить, вместо того, чтобы использовать floatValue для преобразования вашего числа, используйте числовой форматер для анализа необработанной строки перед передачей ее в форматтер.
NSNumberFormatter *oParser = [[[NSNumberFormatter alloc] init] autorelease];
[oParser setNumberStyle:NSNumberFormatterDecimalStyle];
[oParser setLocale:oRussianLocale]; //Put in appropriate locale
NSNumber *oParsedNumber = [oParser numberFromString:@"29,3508"]; //replace with your variable
...
[oFmt stringFromNumber:oParsedNumber];