Подтвердить что ты не робот

Самый простой способ конвертировать NSString в его эквивалент валюты в Cocoa

У меня есть значение NSString @ "78000". Как я могу получить это в формате валюты, т.е. 78 000 долларов, оставаясь NSString.

4b9b3361

Ответ 1

Вам нужно использовать форматирование чисел. Обратите внимание, что это также то, как вы отображаете даты/время и т.д. В правильном формате для локали пользователей

// alloc formatter
NSNumberFormatter *currencyStyle = [[NSNumberFormatter alloc] init];

// set options.
[currencyStyle setFormatterBehavior:NSNumberFormatterBehavior10_4];
[currencyStyle setNumberStyle:NSNumberFormatterCurrencyStyle];

NSNumber *amount = [NSNumber numberWithInteger:78000];

// get formatted string
NSString* formatted = [currencyStyle stringFromNumber:amount]

[currencyStyle release];

Ответ 2

Десятичные/центы в конце можно контролировать следующим образом:

[currencyStyle setMaximumFractionDigits:0];

Здесь ссылка на документацию из apple

Ответ 3

Ответ выше будет преобразовывать число, но вот метод фактического преобразования формата NSString в формат валюты

- (NSString*) formatCurrencyWithString: (NSString *) string
{
    // alloc formatter
    NSNumberFormatter *currencyStyle = [[NSNumberFormatter alloc] init];

    // set options.
    [currencyStyle setFormatterBehavior:NSNumberFormatterBehavior10_4];

    // reset style to no style for converting string to number.
    [currencyStyle setNumberStyle:NSNumberFormatterNoStyle];

    //create number from string
    NSNumber * balance = [currencyStyle numberFromString:string];

    //now set to currency format
    [currencyStyle setNumberStyle:NSNumberFormatterCurrencyStyle];

    // get formatted string
    NSString* formatted = [currencyStyle stringFromNumber:balance];

    //release
    [currencyStyle release];

    //return formatted string
    return formatted;
}