Как к вокруг CGFloat

Я сделал этот метод

+ (CGFloat) round: (CGFloat)f {
    int a = f;
    CGFloat b = a;
    return b;
}

Это работает как ожидалось, но это только округляет в меньшую сторону. И если это - отрицательное число, это все еще округляет в меньшую сторону.

Это было просто быстрым методом, который я сделал, не очень важно, чтобы это округлилось правильно, я просто добрался вокруг значений X и Y камеры для моей игры.

Этот метод хорошо? Это быстро? Или есть ли лучшее решение?

18
задан Suragch 2 April 2016 в 02:20
поделиться

3 ответа

Уже есть стандартные функции с поведениями, которые могут вам понадобиться в , например: floorf , ceilf , roundf , rintf и nearintf (lasf 'f' означает «плавающую» версию, версии без него - «двойные» версии).

Стандартные методы лучше использовать не только потому, что они стандартные, но и потому, что они лучше работают в крайних случаях.

Обновление 2013 (jessedc)

iOS больше не 32-разрядная. Есть ряд других ответов на этот вопрос, которые сейчас более актуальны.

В большинстве ответов упоминается импорт tgmath.h

26
ответ дан 30 November 2019 в 05:40
поделиться

CGFloat определяется типом либо double , либо float , поэтому вы можете округлить их, как любой другой вещественный тип:

CGFloat round(CGFloat aFloat)
{
    return (int)(aFloat + 0.5);
}

Примечание что, хотя это работает с достаточно маленькими числами с плавающей запятой, чтобы переносить дробь, это может вести себя странно с большими значениями.

5
ответ дан 30 November 2019 в 05:40
поделиться

Вы изобретаете колесо - и это вопрос C, а не Цель C. Просто используйте стандартную функцию C round ().

0
ответ дан 30 November 2019 в 05:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: