Mam dwie wartości CGFloat i chcę obliczyć wynik modulo. Innymi słowy: chcę wiedzieć, co pozostanie, jeśli wartość A zostanie umieszczona jak najwięcej w valueB.
Więc właśnie spróbowałem:
CGFloat moduloResult = valueB % valueA;
kompilator narzeka na% i mówi mi: "nieprawidłowe operandy do binarnego%". Dowolny pomysł?
tgmath.h
jest „typem generycznym” (stąd „tg”) i dlatego zdecyduje, którąmath.h
funkcję wywołać, biorąc pod uwagę typ wprowadzonych danych. (Na przykład wywołaniefloor(x)
ztgmath.h
zawartością wywoła (frommath.h
)floorf(x)
ifx
to afloat
,floor(x)
ifx
is adouble
, orfloorl(x)
ifx
is along double
.)Jeśli dobrze pamiętam, modulo wymaga 2 intów jako wejścia, więc potrzebujesz czegoś takiego:
CGFloat moduloResult = (float)((int)valueB % (int)valueA);
Zakładając, że wartość B i wartość A są zmiennoprzecinkami
źródło