Перейти к содержимому


Фотография

Деление целых чисел


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 2

#1 8rutu5

8rutu5

    Пользователь

  • Пользователь
  • PipPipPip
  • 397 сообщений

Отправлено 28 Декабрь 2018 - 14:15

Вопрос наверно глупый, но, честно говоря, я уже всю голову сломал. Проблема заключается в том, что в sourcepawn не понятно как делить 2 целых числа между собой.

Я просмотрел, наверно, все уроки, и из всего, что я нашел, полезным оказалось только явное преобразование типов view_as<тип>.

Но дело в том, что даже это преобразование мне никак не помогает. Опишу проблему:

Есть 2 int-переменные, которые надо поделить между собой, допустим a и b. И переменная, в которую запишется результат r.

Например, а = 10, b = 5.

Я перепробовал много способов, к примеру:

r = view_as<float>(a) / view_as<float>(b); В итоге уходит в - 2 147... и т.д. Как оказывается, в данном случае a и b равны 0, то есть не проходит преобразование.

Отсюда вопрос: Я делаю что-то не так? И если да, то что этому языку еще нужно от меня? В уроках везде есть инфа только об этом. Стоит отметить, что сами по себе a и b во время деления, в целочисленном типе имеют свои значения 10 и 5, но при преобразовании сразу же становятся равны 0. Тогда непонятно, зачем, вообще, нужно это преобразование...

Спасибо.



#2 Райский

Райский

    Пользователь

  • Пользователь
  • PipPipPip
  • 270 сообщений

Отправлено 28 Декабрь 2018 - 14:20

Вопрос наверно глупый, но, честно говоря, я уже всю голову сломал. Проблема заключается в том, что в sourcepawn не понятно как делить 2 целых числа между собой.

Я просмотрел, наверно, все уроки, и из всего, что я нашел, полезным оказалось только явное преобразование типов view_as<тип>.

Но дело в том, что даже это преобразование мне никак не помогает. Опишу проблему:

Есть 2 int-переменные, которые надо поделить между собой, допустим a и b. И переменная, в которую запишется результат r.

Например, а = 10, b = 5.

Я перепробовал много способов, к примеру:

r = view_as<float>(a) / view_as<float>(b); В итоге уходит в - 2 147... и т.д. Как оказывается, в данном случае a и b равны 0, то есть не проходит преобразование.

Отсюда вопрос: Я делаю что-то не так? И если да, то что этому языку еще нужно от меня? В уроках везде есть инфа только об этом. Стоит отметить, что сами по себе a и b во время деления, в целочисленном типе имеют свои значения 10 и 5, но при преобразовании сразу же становятся равны 0. Тогда непонятно, зачем, вообще, нужно это преобразование...

Спасибо.

int a = 10, s = 5, r;

 

void MyFunc()

{

    if(a > s)

    {

        r = a/s;

        PrintToServer("В ходе деления A на B = %i", r);

    }

}

 

И преобразовывать в этом случае ничего не надо !!! 


Сообщение отредактировал Райский: 28 Декабрь 2018 - 19:26


#3 8rutu5

8rutu5

    Пользователь

  • Пользователь
  • PipPipPip
  • 397 сообщений

Отправлено 28 Декабрь 2018 - 15:50

int a = 10, b = 5, r;

 

void MyFunc()

{

    if(a > B)

    {

        r = a/b;

        PrintToServer("В ходе деления A на B = %i", r);

    }

}

 

И преобразовывать в этом случае ничего не надо !!! 

 

Не работает деление целых чисел. Как только их делишь - результат всегда 0.

Кстати, данную проблему только что решил, заменой view_as<float>(переменная) на float(переменная




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных