Используйте метод truncatingRemainder () в Obj-c - PullRequest
0 голосов
/ 23 мая 2019

Я пытаюсь создать 3D-анимацию куба в Objective-. Вот кусок кода, который я хотел бы использовать мой код. Кто-нибудь знает, как преобразовать этот метод в target-c? Я не нашел ничего в документации Apple.

let hasCompletedPaging = (xOffset / scrollView.frame.width).truncatingRemainder(dividingBy: 1) == 0

1 Ответ

1 голос
/ 23 мая 2019

truncatingRemainder(dividingBy: 1) дает только дробную часть результата. Таким образом, сравнение truncatingRemainder(dividingBy: 1) с 0 аналогично проверке, является ли результат целым числом.

Одно простое преобразование может быть:

BOOL hasCompletedPaging = (xOffset / scrollView.frame.width) == round(xOffset / scrollView.frame.width);

Но это не идеально из-за неточности чисел с плавающей запятой.

Лучшей проверкой может быть:

BOOL hasCompletedPaging = fabs(xOffset / scrollView.frame.width - round(xOffset / scrollView.frame.width)) < 0.000001;

Но самое простое решение - использовать fmod. Если результат равен нулю, это означает, что первое число является целым кратным второго:

BOOL hasCompletedPaging = fmod(xOffset, scrollView.frame.width) < 0.000001;
...