2015-12-11 5 views
0

У меня есть номер 36381129. Мне нужен номер 36.381,129Преобразование чисел в валюту

Я пробовал этот код, но он не работает.

int number = 36381129; 
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];    
[numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle]; 
NSString *numberAsString = [numberFormatter stringFromNumber: [NSNumber numberWithInt:number]]; 

Я даю этот номер.

36.381.129,00 $

+0

Какой стиль валюты это? 36.381,129 – dstudeba

+0

Возможно, это? Http: //stackoverflow.com/questions/16123119/nsnumberformatter-with-comma-decimal-separator – tidwall

+0

Если вы хотите получить такой результат, почему ваш номер не определяется как 'double number = 36381.129; '? – rmaddy

ответ

-1

Добро пожаловать на SO. Ваш вопрос довольно расплывчатый.

Форматы валют зависят от локали пользователя. Обычно лучше либо использовать стандартную локаль устройства, либо установить локаль, а затем позволить форматированию валют создать эту строку, подходящую для этой локали.

Если вы настроили форматированный формат валюты, это будет неправильно для некоторых пользователей. (Например, в США мы используем «.» Как разделитель десятичных чисел и запятые в качестве символа группировки. В большинстве стран Европы они используют запятую в качестве разделителя с разделителями и период как символ группировки. Некоторые страны помещают символ валюты в конец денежной суммы, а также другие поместить его в начале)

-1

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

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 
NSString *groupingSeparator = [[NSLocale currentLocale] objectForKey:NSLocaleGroupingSeparator]; 
[formatter setGroupingSeparator:groupingSeparator]; 
[formatter setGroupingSize:3]; 
[formatter setAlwaysShowsDecimalSeparator:NO]; 
[formatter setUsesGroupingSeparator:YES]; 

и использовать его таким образом:

NSString *formattedString = [formatter stringFromNumber:[NSNumber numberWithFloat:rev]; 

Это общее решение и будет работать в любой стране в соответствии с их разделителем группировки

Взято из: https://stackoverflow.com/a/5407103/2082569

+0

Почему бы не установить свойство 'locale' вместо' groupingSeparator'? – johnnieb

+0

Я использую NSLocale для получения конкретной страны groupSeparator – atulkhatri

+0

Будет ли результат отличаться, если я просто установлю 'locale' вместо' groupingSeparator'? – johnnieb

0

Я думаю, что это BRAZILIAN РЕАЛЬНЫЙ ВАЛЮТНЫЙ Формат. Вы должны вызвать этот метод с вашей ценой в значение float, и этот метод возвращает вашу строку в ваш формат. Например, если мы пройдем 123456789, тогда он вернется 123,456,789.00.

//Convert Price to Your Price Format 
+(NSString*)convertFormat:(float)value{ 

    NSString * convertedString = [NSString stringWithFormat:@"%.2f", value]; 

    NSString * leftPart; 
    NSString * rightPart; 

    if (([convertedString rangeOfString:@"."].location != NSNotFound)) { 
     rightPart = [[convertedString componentsSeparatedByString:@"."] objectAtIndex:1]; 
     leftPart = [[convertedString componentsSeparatedByString:@"."] objectAtIndex:0]; 
    } 

    //NSLog(@"%d",[leftPart length]); 
    NSMutableString *mu = [NSMutableString stringWithString:leftPart]; 

    if ([mu length] > 3) { 
     [mu insertString:@"." atIndex:[mu length] - 3]; 
     //NSLog(@"String is %@ and length is %d", mu, [mu length]); 
    } 

    for (int i=7; i<[mu length]; i=i+4) { 
     [mu insertString:@"." atIndex:[mu length] - i]; 
     //NSLog(@"%d",mu.length); 
    } 

    convertedString = [[mu stringByAppendingString:@","] stringByAppendingString:rightPart]; 

    return convertedString; 

} 

Для получения дополнительной информации см. Это blog.

Надеюсь, это то, что вы ищете. Меня волнует любая забота.

Смежные вопросы