2009-07-12 2 views
3

에 대한 소수의 수를 결정 :는 통화 아이폰에

 
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

나는 비슷한 문제가 있었지만 위의 대답은 실제로 내 문제를 해결하지 못했습니다.

NSNumberFormatter에서 maximumFractionDigits 메서드를 사용하여 일본어 로캘에 대해 0을 부여했습니다. 형식기에 NSNumberFormatterCurrencyStyle을 사용해야합니다. 그렇지 않으면 다른 형식 자의 소수 자릿수가 표시됩니다.

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

    NSLog(@"Number of decimal places %i", [currencyFormatter maximumFractionDigits]);