2009-07-12 2 views
3

На iPhone:Определение количества десятичных чисел для валюты

 
Using the US locale, a currency looks like this: $1,234.56 
Using the UK locale, a currency looks like this: £1,234.56 
Using the German (Germany) locale, a currency looks like this: 1.234,56 € 

and finally, a Japanese currency: ¥1,234 

Японская валюта не имеет знаков после запятой и это влияние моих привычках клавиатуры значительно. Я пытаюсь найти метод в рамках Cocoa-touch, который скажет мне, сколько десятичных знаков имеет определенная валюта. Моя жестко закодированная величина 2 не делает мне справедливость :(

Может кто-нибудь помочь?

ответ

2

Вы должны иметь возможность использовать объекты CFNumberFormatter для получения необходимой вам информации. В частности, вы можете использовать CFNumberFormatterGetDecimalInfoForCurrencyCode:

CFStringRef localeIdent = CFSTR("JPY"); 

int numDecimals; 
double rounding; 
BOOL result = CFNumberFormatterGetDecimalInfoForCurrencyCode(localeIdent, &numDecimals, &rounding); 

Я надеюсь, что помогает.

0

Финансовые компании поддерживают базы данных такого рода информации, Вы можете быть в состоянии купить данные или импортировать его из интернета-источника

Примечания. также:. некоторые валютам нужны три или четыре знака после запятой См http://www.londonfx.co.uk/ccylist.html примеров. .

+0

NSNumberFormatter является блестящим для этого. У меня нет проблем с форматированием, так как все это делается для меня форматированием. Я просто не могу узнать, как определить, сколько десятичных знаков мне необходимо предоставить. Спасибо за ссылку - интересный материал. – rein

+0

Кстати, в идеале я хотел бы связать число десятичных знаков с тем, что закодировано в форматирование - иначе все может пойти не так. – rein

2

Я не программировал в Какао целую вечность, но из документации для NSNum berFormatter, есть функция под названием «currencyDecimalSeparator» - это может, по крайней мере, сказать вам, есть ли вообще валюта, что может быть началом?

0

У меня была аналогичная проблема, но ответы выше не помогли решить мою проблему.

В итоге я использовал метод maximumFractionDigits для NSNumberFormatter, который дал мне 0 для японского языка. Убедитесь, что для форматирования используется NSNumberFormatterCurrencyStyle, иначе вы увидите десятичные знаки в других форматах.

NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init]; 
    [currencyFormatter setLocale:[NSLocale currentLocale]]; 
    [currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 

    NSLog(@"Number of decimal places %i", [currencyFormatter maximumFractionDigits]); 
Смежные вопросы