Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 1 из 1

Тема: floatcmp

  1. #1
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±

    floatcmp

    Описание:
    Сравнивает два вещественных числа.

    Параметры:
    Float:oper1 - число 1.
    Float:oper2 - число 2.

    Возвращаемое значение:
    Возвращает 0, если числа равны; 1, если первый операнд больше второго, и -1, если второй операнд больше первого.

    Примечания:
    • Возвращаемые функцией значения чем-то похожи на результат вычитания (oper1-oper2).
      Если числа равны, результат вычитания - 0, отрицательный результат - функция вернёт -1, положительный - 1.
    • При обычном сравнении вещественных чисел (>, <, >=, <=) функция floatcmp используется косвенно, вызываясь из функции-"обёртки" на Pawn.
      Для каждого оператора сравнения вещ. чисел есть своя функция-обёртка, по-своему обрабатывающая результат, возвращаемый floatcmp (см. файл float.inc).
      Смысл использования floatcmp напрямую в том, что тогда получится миновать вызов функции-обёртки, благодаря чему вы можете получить прирост в производительности своего кода.
      Особенно полезно, когда сравнение проводится в цикле (например, при обработке координат всех машин на сервере или при проверке здоровья/брони игроков).
    • Для проверки на равенство/неравенство (==, !=) также можно использовать оператор переопределения тега : и сравнивать оба числа, как целые, минуя вызов нативной функции:
      1. if(_:oper1 == _:oper2)

      Внимание! Данную оптимизацию можно использовать только при использовании операторов == и !=. Проверки >, <, >= и <= будут работать неправильно, если привести операнды к целочисленному тегу. Кроме того, выражение "_:0.0 == _:-0.0" выдаст 0, как будто 0.0 и -0.0 не равны, однако floatcmp считает эти числа равными (т.е. "floatcmp(0.0, -0.0)" вернёт 0).


    Пример использования:
    1. CMD:checkmyhealth(playerid, params[])
    2. {
    3. new Float:health;
    4. GetPlayerHealth(playerid, health);
    5. if(floatcmp(health, 100) >= 0) // если 0 или 1, здоровье равно или больше 100.0
    6. return SendClientMessage(playerid, -1, "Ваше здоровье в норме.");
    7. }


    Статью подготовил: Daniel_Cortez
    Специально для Pro-Pawn.ru
    Копирование данной статьи на других ресурсах без разрешения автора запрещено!
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  2. 6 пользователя(ей) сказали cпасибо:
    #ball (30.05.2015) #Vito (31.05.2015) Avertus (30.05.2015) gangzone.ini (30.05.2015) Nexius_Tailer (25.11.2017) Snoop_Dog (30.05.2015)
 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •