두 개의 CGFloat 값이 있고 모듈로 결과를 계산하고 싶습니다. 즉, valueA가 valueB에 가능한 많이 배치되면 남은 것이 무엇인지 알고 싶습니다.
그래서 방금 시도했습니다.
CGFloat moduloResult = valueB % valueA;
컴파일러는 %에 대해 불평하고 "이진 %에 대한 유효하지 않은 피연산자"라고 말합니다. 어떤 생각?
두 개의 CGFloat 값이 있고 모듈로 결과를 계산하고 싶습니다. 즉, valueA가 valueB에 가능한 많이 배치되면 남은 것이 무엇인지 알고 싶습니다.
그래서 방금 시도했습니다.
CGFloat moduloResult = valueB % valueA;
컴파일러는 %에 대해 불평하고 "이진 %에 대한 유효하지 않은 피연산자"라고 말합니다. 어떤 생각?
답변:
%는 int
or long
, not float
or double
입니다.
당신은 사용할 수 있습니다 fmod()
또는 fmodf()
에서 <math.h>
대신.
CGFloat의 발명가가 제안한<tgmath.h>
대로 더 좋습니다 .
tgmath.h
"type generic"(따라서 "tg")이므로 math.h
입력 유형에 따라 호출 할 함수를 결정 합니다. (예를 들어, 호출 floor(x)
에 tgmath.h
포함하는 것은 (에서 호출 math.h
) floorf(x)
하는 경우 x
A는 float
, floor(x)
경우 x
A는 double
, 또는 floorl(x)
경우에 x
A는 long double
.)