문제

NSNUMBERFORMATT가 괄호가있는 음수를 표시하여 마이너스 부호를 앞쪽 (또는 현지화 된 표준이 무엇이든) 변경하여 변경하고 싶습니다.

나는 setNegativeFormat로 이것을 할 수 있다고 가정합니다.

하지만 Apple의 OH 너무 철저한 문서를 읽고 머리를 긁어 냈습니다.


setnegativeformat :

수신기가 음수 값을 표시하는 데 사용하는 형식을 설정합니다.

- (void)setNegativeFormat:(NSString *)aFormat

매개 변수aformat 음수 값에 대한 형식을 지정하는 문자열입니다.

유효성iPhone OS 2.0 이상으로 제공됩니다.

또한보십시오- 음성

선언nsnumberformatter.h


aformat의 옵션은 무엇입니까?!? C'mon Doc Writers, 여기서 링크가 당신을 죽일까요?

편집 : 가치가있는 것에 대해 여기에 선언이 있습니다.

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

현지화 된 통화 기호와 소수점이 무엇이든 소수점을 유지하는 것이 중요합니다. 따라서 [CurrencyFormatter setNegativeFormat :@"-#, ## 0.00"] 통화가 누락되었고 모든 통화에 대해 2 개의 소수점을 가정 할 수는 없기 때문에 작동하지 않을 것입니다.

도움이 되었습니까?

해결책

당신이 코코아의 데이터 포맷 프로그래밍 안내서:

형식 문자열은 다음의 형식 패턴을 사용합니다 유니 코드 기술 표준 #35 (이 참조는 Mac OS X V10.4 용 Formatters 버전입니다. TR35-4).

편집하다:

통화에 따라 형식 문자열을 설정하려면 ¤ 캐릭터, 예를 들어 :

[formatter setFormat:@"¤#,##0.00"];

이것은 현재 현지화에 대한 통화 기호를 추가합니다. ¤ 캐릭터.

따라서 동일한 개념을 네거티브 형식 문자열에 적용합니다.

[formatter setFormat:@"-¤#,##0.00"];

이것은 또한의 대신 통화 기호를 적용합니다. ¤ 현재 현지화를 위해.

다른 팁

좋아, 제가 일한 대답은 다음과 같습니다.

[currencyFormatter setNegativeFormat:@"-¤#,##0.00"];

열쇠는 이것이 Whatzit입니까? 캐릭터 "¤". 그것이 무엇이라고 불리는지 모르겠습니까? 누구나? 그러나이 형식 문자열의 현지화 된 통화를 나타냅니다 ...

이 경우 NSString 형식을 찾고 있습니다. 형식 문자열 세부 사항을 확인하십시오.

당신이 부정적인 것을 원한다면 12,345.67 로 표시합니다 -12,345.67, 나는 올바른 nsstring 값이 믿습니다 @"-#,##0.00"

또한 위의 문서에서 다음 문장을 언급했습니다.

음수 값에 대한 형식을 지정하지 않으면 양수 값에 지정된 형식이 사용됩니다.

편집하다:
10.4에 대한 업데이트 : 다음은 10.4와 그 이후의 행동을 설명하는 PDF입니다.
그리고 그 문서에서 링크 된 바와 같이 다음은 다음과 같습니다. 10.4 이상에 필요한 형식의 데이터.
이 문서에서 올바른 문자열은 다음과 같습니다. @"-#,##0.##"

주어진 모든 대답은 통화가 두 십진 자리에 있다고 가정하고 쉼표를 천 개 분리기로 사용합니다. 분명히이 표준을 준수하지 않는 여러 통화가 있습니다. http://en.wikipedia.org/wiki/decimal_mark, 그래서 나는 다음 기술을 사용합니다

    NSString * formattedBalance = [currencyFormatter stringFromNumber:balance];
    if([formattedBalance rangeOfString:@"("].location != NSNotFound ) {
        formattedBalance = [NSString stringWithFormat:@"-%@",[[formattedBalance stringByReplacingOccurrencesOfString:@")" withString:@"" ]stringByReplacingOccurrencesOfString:@"(" withString:@"" ]];
    }
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top