Objective-C / Cocoa Touch에서 모듈로 작업을 수행하는 방법은 무엇입니까?


82

두 개의 CGFloat 값이 있고 모듈로 결과를 계산하고 싶습니다. 즉, valueA가 valueB에 가능한 많이 배치되면 남은 것이 무엇인지 알고 싶습니다.

그래서 방금 시도했습니다.

CGFloat moduloResult = valueB % valueA;

컴파일러는 %에 대해 불평하고 "이진 %에 대한 유효하지 않은 피연산자"라고 말합니다. 어떤 생각?

답변:


204

%는 intor long, not floator double입니다.

당신은 사용할 수 있습니다 fmod()또는 fmodf()에서 <math.h>대신.

CGFloat의 발명가가 제안한<tgmath.h> 대로 더 좋습니다 .


2
아이폰에서 tgmath.h를 사용할 수 있습니까? 나는 math.h를 포함 할 필요가 없었기 때문에 궁금합니다. 그것은 기초 프레임 워크와 함께 제공됩니다.

어쨌든 tgmath.h와 math.h의 차이점은 무엇입니까?
user4951

4
Jim : tgmath.h"type generic"(따라서 "tg")이므로 math.h입력 유형에 따라 호출 할 함수를 결정 합니다. (예를 들어, 호출 floor(x)tgmath.h포함하는 것은 (에서 호출 math.h) floorf(x)하는 경우 xA는 float, floor(x)경우 xA는 double, 또는 floorl(x)경우에 xA는 long double.)
조지 WS

10

모듈로가 입력으로 2 개의 정수를 필요로하는 것을 올바르게 기억한다면 다음과 같은 것이 필요합니다.

CGFloat moduloResult = (float)((int)valueB % (int)valueA);

valueB와 valueA가 모두 실수라고 가정합니다.


3
물론 이것은 반올림 때문에 정답을 제공하지 않습니다.
fishinear
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.