2010-12-04 5 views
1

에 CGFloat를 변환하는 ..어떻게이 CGFloat, 이런 식으로 뭔가를 사용하여 문자열을 얻기 위해 노력하고 있어요 부호없는 정수

helpMessage = [NSString stringWithFormat:@"The unsigned integer value is %i", (unsigned int)myCGFloat]; 

이 작동하지 않습니다. 주어진 CGFloat 값 -2는 문자열에서 0을 얻습니다.

내가 사용하는 경우

...

helpMessage = [NSString stringWithFormat:@"The unsigned integer value is %i", (int)myCGFloat]; 

나는 -2 얻을. 점점 가까워지고 있습니다. 그래서 @u를 형식 지정자로 사용할 수 있다고 생각했지만 4294967294가되었습니다.

내가 뭘 잘못하고 있니?

미리 도움을 청하십시오. 이것은 쉬운 것이어야합니다.

John

+1

-2에 대한 결과는 무엇입니까? – grahamparks

답변

1

따라서 -2를 부호없는 정수로 변환하려고합니다. 부호없는 int의 캔트는 0보다 작을 수 있습니다. 따라서 잘못 표현 될 것입니다. 말하자면하기 위해, unsigned int에 값을 변환 한 후, -2의 부정을 표현하는 데 사용할 수있는 비트가 없기 때문에

+0

확인. 알 겠어. 나는 그것을 알아. 이 일을 내가 뭘하려고 노력하고 있습니다 ... – user278859

3

당신은 4294967294을 받고있어, 그래서 값 대신 "언더 플로우"에 의해 2 :

0 
4294967295 (-1) 
4294967294 (-2) 

음수 값을 표시하려면 부호있는 정수 (%i)로 서식을 지정해야합니다. 서명 된 32 비트 정수의 범위는 -2147483648에서 2147483647이고 부호없는 32 비트 정수의 범위는 0에서 4294967295입니다.

1

확인. 대답을 주셔서 감사합니다 ...

helpMessage = [NSString stringWithFormat:@"The abasolute value is %i", abs((int)myCGFloat]); 

나는 CGFloat에 직접 abs를 시도했지만, 이제 abs가 int 값을 예상한다는 것을 알았습니다. 서명되지 않은 int는 절대 값과 같은 것이라고 생각했습니다. 나를 똑바로 세워 줘서 고마워.

+0

Oooops 있었어야 ... (abs) (int) myCGFloat; – user278859

+0

Jeeez는이 권리를 얻을 수 없습니다 ... (abs) ((int) myCGFloat); – user278859

+0

기존 게시물을 편집 할 수 있음을 알고 있습니다. –