Типы данных в формулах

Просмотр 4 сообщений - с 1 по 4 (из 4 всего)
  • Автор
    Сообщения
  • #7805
    kustar
    Участник

    Михаил, добрый день!
    Пытаюсь сделать простую формулу сдвига одного байта для получения номера бита, в котором 1. Байт получаю из GetByte.
    Не могу применить тип Byte, только int либо UInt.
    Вот такую конструкцию
    public UInt64 BUKShift(UInt64 val)
    {
    UInt64 n = 0;
    while (val > 0)
    {
    val = val >> 1;
    ++n;
    }
    return (UInt64)n;
    }

    компилятор понимает.
    Но при вызове функции из входного канала BUKShift(Val(861)) ошибка компиляции:
    2017-11-11 18:19:37 <WIN-3SO1IL7Q2GO><система><ERR> Ошибка при компилировании исходного кода формул:
    Строка 674, колонка 57: error CS1502: Наиболее подходящий перегруженный метод для «Scada.Server.Svc.CalcEngine.BUKShift(ulong)» имеет несколько недопустимых аргументов
    Строка 674, колонка 66: error CS1503: Аргумент «1»: преобразование типа из «double» в «ulong» невозможно

    Понимаю, что проблема в преобразовании типов, но как сделать правильно — не знаю.
    Просьба разъяснить правила работы с типами данных при использовании формул.

    #7806
    manjey73
    Участник

    Сделайте public double BUKShift(double val)

    А в Uint64 преобразуйте внутри формулы.

    #7809
    Mikhail
    Модератор

    Михаил, добрый день!

    Добрый день! Но здесь не только я 🙂

    #7814
    kustar
    Участник

    Благодарю, коллеги! 🙂

Просмотр 4 сообщений - с 1 по 4 (из 4 всего)
  • Вы должны авторизироваться для ответа в этой теме.