Описание:
Сравнивает два вещественных числа.
Параметры:
Float:oper1 - число 1.
Float:oper2 - число 2.
Возвращаемое значение:
Возвращает 0, если числа равны; 1, если первый операнд больше второго, и -1, если второй операнд больше первого.
Примечания:- Возвращаемые функцией значения чем-то похожи на результат вычитания (oper1-oper2).
Если числа равны, результат вычитания - 0, отрицательный результат - функция вернёт -1, положительный - 1.
- При обычном сравнении вещественных чисел (>, <, >=, <=) функция floatcmp используется косвенно, вызываясь из функции-"обёртки" на Pawn.
Для каждого оператора сравнения вещ. чисел есть своя функция-обёртка, по-своему обрабатывающая результат, возвращаемый floatcmp (см. файл float.inc).
Смысл использования floatcmp напрямую в том, что тогда получится миновать вызов функции-обёртки, благодаря чему вы можете получить прирост в производительности своего кода.
Особенно полезно, когда сравнение проводится в цикле (например, при обработке координат всех машин на сервере или при проверке здоровья/брони игроков).
- Для проверки на равенство/неравенство (==, !=) также можно использовать оператор переопределения тега : и сравнивать оба числа, как целые, минуя вызов нативной функции:
Внимание! Данную оптимизацию можно использовать только при использовании операторов == и !=. Проверки >, <, >= и <= будут работать неправильно, если привести операнды к целочисленному тегу. Кроме того, выражение "_:0.0 == _:-0.0" выдаст 0, как будто 0.0 и -0.0 не равны, однако floatcmp считает эти числа равными (т.е. "floatcmp(0.0, -0.0)" вернёт 0).
Пример использования:
CMD:checkmyhealth(playerid, params[])
{
new Float:health;
if(floatcmp(health
, 100) >= 0) // если 0 или 1, здоровье равно или больше 100.0 }
Статью подготовил: Daniel_Cortez
Копирование данной статьи на других ресурсах без разрешения автора запрещено!