Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 21

Тема: Округление вещественного числа

  1. #1
    Пользователь Аватар для sertol64
    Регистрация
    06.12.2017
    Адрес
    Подмосковье, не очень близкое
    Сообщений
    378

    По умолчанию Округление вещественного числа

    Доброго дня! Уважаемые Волшебники, всю голову сломал как округлить вещественное число до десятой доли. А именно есть таблица, что к температуре 16,0грд соответствует некий коэффициент, а к температуре 16,5 соответствует другой коэффициент. И так далее с прибавлением 0,5 вплоть до 30грд. Но на аналоговый вход от датчика приходит и 16,1 и 16,2 и 16,3 и 16,4 и т.д. Как умудриться, чтоб если уж 16,1(16,2) соответствовало 16,0 а 16,3(16,4)соответствовало16,5. В базе есть макрос floor(по-моему) но он округляет до целого числа в меньшую сторону. МоЖ у кого есть какие решения?!

  2. #2

    По умолчанию

    Цитата Сообщение от sertol64 Посмотреть сообщение
    Доброго дня! Уважаемые Волшебники, всю голову сломал как округлить вещественное число до десятой доли. А именно есть таблица, что к температуре 16,0грд соответствует некий коэффициент, а к температуре 16,5 соответствует другой коэффициент. И так далее с прибавлением 0,5 вплоть до 30грд. Но на аналоговый вход от датчика приходит и 16,1 и 16,2 и 16,3 и 16,4 и т.д. Как умудриться, чтоб если уж 16,1(16,2) соответствовало 16,0 а 16,3(16,4)соответствовало16,5. В базе есть макрос floor(по-моему) но он округляет до целого числа в меньшую сторону. МоЖ у кого есть какие решения?!
    Да, этот именно к "полу" округляет, нужен был для одного проекта, по Вашей теме макрос недавно попадался, сейчас поищу тему.

    Вот https://owen.ru/forum/attachment.php...7&d=1592163043 картинка, а где-то тут наверное, сам макрос https://owen.ru/forum/attachment.php...6&d=1590401339
    С уважением, Ревака Юрий.
    Инженер группы технической поддержки компании "ОВЕН"
    e-mail: yu.revaka@owen.ru

    Шаблон описания ошибки ПР или OL http://ftp-ow.owen.ru/softupdate/OWE...s/Shablon.docx
    Видео уроки по ПР200 и OWEN Logic http://edu.owen.ru/series/pr200_rev/
    Другие видеоролики по тематике ПР https://www.youtube.com/channel/UCj4...H5H3d_t6iDlQOQ

  3. #3
    Пользователь Аватар для sertol64
    Регистрация
    06.12.2017
    Адрес
    Подмосковье, не очень близкое
    Сообщений
    378

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    плюс 0.5 и то_инт вот и весь макрос
    Я Жж не увижу десятой части числа? INT все числа округляет до целого. Или я что то не понял?

  4. #4
    Пользователь Аватар для sertol64
    Регистрация
    06.12.2017
    Адрес
    Подмосковье, не очень близкое
    Сообщений
    378

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Зачем до десятой когда нужно до 0.5 ? Общий вид округлений (в термины ПР перевести)
    real_to_int(X / M) * M; //M здесь 0.5/0.1/0.01 - то до чего хотите. Хоть 23.
    Уважаемый Валенок я ничего не понял, перевод в int округляет до целого. Поясните пожалуйста.
    Я повторюсь. Округление должно быть такое : Если допустим температура 16,1, то 16,0, если 16,2, то 16,0 если же 16,3, то уже 16,5. И т.д. В у мной таблице только температурные коэффициенты по пол.градуса.
    Последний раз редактировалось sertol64; 18.06.2020 в 16:53.

  5. #5
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,823

    По умолчанию

    Цитата Сообщение от sertol64 Посмотреть сообщение
    Уважаемый Валенок я ничего не понял, перевод в int округляет до целого. Поясните пожалуйста.
    Я повторюсь. Округление должно быть такое : Если допустим температура 16,1, то 16,0, если 16,2, то 16,0 если же 16,3, то уже 16,5. И т.д. В у мной таблице только температурные коэффициенты по пол.градуса.
    Вот по мотивам Валенка
    Захват-2.png

    13,1 --> 13
    Захват-3.png

    13,3 --> 13,5
    Захват-4.png

    13,7 --> 13,5
    Захват-5.png

    13,8 --> 14,0
    Захват-6.png

    Надеюсь исходные числа >= 0?

    иначе макрос целочисленного деления с округлением DIV_05 нужно заменить на другой,
    Вложения Вложения
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  6. #6
    Пользователь Аватар для sertol64
    Регистрация
    06.12.2017
    Адрес
    Подмосковье, не очень близкое
    Сообщений
    378

    По умолчанию

    Воооо! Вот ОНО! Всё дело в этом таинственном макросе DIV05_1. Проблема решена. Спасибо всем!!! Будем дальше "ваять"!

  7. #7
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,823

    По умолчанию

    Цитата Сообщение от sertol64 Посмотреть сообщение
    Воооо! Вот ОНО! Всё дело в этом таинственном макросе DIV05_1. Проблема решена. Спасибо всем!!! Будем дальше "ваять"!
    Это деление целых чисел с округление результата, а не с отбрасыванием дробной части результата
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  8. #8
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,823

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Какие ж тут мотивы то ? Ни разу.


    И чего ТС уперся в свои 0.1 если ему надо 0.5 ?

    M - это определитель округления. Нужно 0.1 => M = 0.1. Нужно 0.01 => M = 0.01. Аффтору нужно 0.5. Вот и пусть ставит 0.5

    Лоджик чего то у меня не симулируется. Вот эквивалент. Пихнуть в макрос думаю не проблема
    Но автору нужно
    Если допустим температура 16,1, то 16,0, если 16,2, то 16,0 если же 16,3, то уже 16,5.
    А этот алгоритм в ОЛ для 16,3 даст только 16
    Захват-1.png

    и для 16,4 тоже 16
    Захват-2.png

    По этому и "по мотивам"

    В ОЛ REAL_TO_INT просто отбрасывает дробную часть,а кодесис REAL_TO_INT округляет целое
    Захват-3.png
    Последний раз редактировалось petera; 18.06.2020 в 19:30.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  9. #9
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,823

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    С какого ? Попробуйте.

    PS
    to int в ОЛ - не округляет штоли ?
    Нет!

    Захват-1.png

    Захват-2.png
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  10. #10
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,823

    Question

    Цитата Сообщение от capzap Посмотреть сообщение
    это как раз к petera по поводу минусов в целочисленных
    Запросто!
    Захват-9.png

    Захват-4.png == Захват-5.png

    Захват-6.png == Захват-7.png

    Эти макросы наплодил давно
    У меня их много :-)
    Захват-8.png
    Вложения Вложения
    Последний раз редактировалось petera; 18.06.2020 в 20:57.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

Страница 1 из 3 123 ПоследняяПоследняя

Похожие темы

  1. Детектор изменения числа
    от ИльяИлья в разделе ПЛК1хх [М02]
    Ответов: 1
    Последнее сообщение: 13.12.2019, 11:57
  2. Дробные числа
    от Алмаз Нафиков в разделе Master SCADA 3
    Ответов: 2
    Последнее сообщение: 06.03.2019, 22:03
  3. Вещественные числа
    от The-Boss в разделе Master SCADA 3
    Ответов: 5
    Последнее сообщение: 27.11.2015, 16:47
  4. Округление значения в СП270
    от Valentin. в разделе Панели оператора (HMI)
    Ответов: 3
    Последнее сообщение: 28.04.2014, 09:18
  5. Вещественные числа
    от Александр86 в разделе ПЛК1хх
    Ответов: 2
    Последнее сообщение: 21.02.2013, 16:34

Ваши права

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