Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 22

Тема: Функция округления вещественных чмсел

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию

    Тупанул. Считал, что real_to_int обрезает, а не округляет почему-то. А так - да, на 100 умножил, преобразовал и разделил на 100. Максимально корректно.

    Спасибо!

  2. #2

    По умолчанию

    И я благодарю. Вопросы были. Прочел и понял свое.
    Недорого купить анальный плаг с доставкой

  3. #3

    По умолчанию

    round_real = INT_TO_REAL( TRUNC( 100 * ( X_real + 0.005 ) ) ) / 100;

  4. #4

    По умолчанию

    Здравствуйте форумчане. Так в итоге мне непонятно, как округлить допустим
    x:=-34,37563245;
    y:=x;
    как сделать так, чтоб y = -34,4

  5. #5

    По умолчанию

    FUNCTION REAL_Round_WORD : WORD
    VAR_INPUT
    f:REAL;
    n:WORD;
    END_VAR
    VAR
    f1:REAL;
    i:WORD;
    w:WORD;
    END_VAR

    f1:=f;
    FOR i:=0 TO n DO
    f1:=f1*10;
    END_FOR;
    w:=REAL_TO_WORD(f1);
    REAL_Round_WORD:=w/10;
    IF (w MOD 10)>=5 THEN
    REAL_Round_WORD:=REAL_Round_WORD+1;
    END_IF;

    ---------------------------------------------------------------
    REAL_Round_WORD(14.7,0) = 15
    REAL_Round_WORD(14.2,0) = 14
    REAL_Round_WORD(14.86,1) = 149
    REAL_Round_WORD(14.82,1) = 148

  6. #6
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,713

    По умолчанию

    Цитата Сообщение от Cbug Посмотреть сообщение
    FUNCTION REAL_Round_WORD : WORD
    VAR_INPUT
    f:REAL;
    n:WORD;
    END_VAR
    VAR
    f1:REAL;
    i:WORD;
    w:WORD;
    END_VAR

    f1:=f;
    FOR i:=0 TO n DO
    f1:=f1*10;
    END_FOR;
    w:=REAL_TO_WORD(f1);
    REAL_Round_WORD:=w/10;
    IF (w MOD 10)>=5 THEN
    REAL_Round_WORD:=REAL_Round_WORD+1;
    END_IF;

    ---------------------------------------------------------------
    REAL_Round_WORD(14.7,0) = 15
    REAL_Round_WORD(14.2,0) = 14
    REAL_Round_WORD(14.86,1) = 149
    REAL_Round_WORD(14.82,1) = 148
    Феерический идиотизм!
    Real_to_word...ха-ха-ха.
    Надо бы теорию подучить, начиная с размерности и диапазона чисел...
    И что покажет word-dword при конвертации отрицательных чисел?
    Последний раз редактировалось Sergey666; 13.02.2020 в 11:09.

  7. #7

    По умолчанию

    Да серьезно. Если Вы не знаете что в тип WORD помещается максимум 5 цифр, то можно в N и 6 и 7 подставлять. Кому надо может выходной тип на DWORD заменить, а кто хочет мега универсальную функцию с защитой от дурака снабдить ее проверками.

  8. #8

    По умолчанию

    w:dword;
    f:real;

    w:=REAL_TO_DWORD(f*10);
    w:=w/10+BOOL_TO_DWORD((w MOD 10)>4));

  9. #9

    По умолчанию

    Да... ребята. Прямо сборище интеллектуалов!

    Надеюсь, что тот неопытный новичок который придет сюда за знаниями сможет найти здесь что-то из большой кучи безполезных постов.

    Функция реально рабочая - преобразует значения датчиков давления (со всегда положительными значениями) в регистр modbus, для последующего отображения на hmi со смещением десятичной точки.

    Заменить типы переменных на какие кому необходимо не составит труда.

  10. #10
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,713

    По умолчанию

    Цитата Сообщение от Cbug Посмотреть сообщение
    Да... ребята. Прямо сборище интеллектуалов!

    Надеюсь, что тот неопытный новичок который придет сюда за знаниями сможет найти здесь что-то из большой кучи безполезных постов.

    Функция реально рабочая - преобразует значения датчиков давления (со всегда положительными значениями) в регистр modbus, для последующего отображения на hmi со смещением десятичной точки.

    Заменить типы переменных на какие кому необходимо не составит труда.
    Датчики давления со всегда положительными значениями... нда теоретик , а что будет показывать функция ваша, если датчик чуть-чуть свакуумировался (такое бывает сплошь и рядом), или дрожание значения 3.8ма...4.2ма? И ведь пишут теоретики ересь типа real_to_word, а в результате та-дам ни с того ни с сего защиты отработали и...ракета...самолет утонули в мировом океане, хим завод выбросил в окружающую среду какую-то вредную хрень и тд и тп.
    А неопытному новичку на форумах нефиг знаний искать!!! Только ответы на конкретные вопросы! А знания надо искать в учебниках, руководствах пользователя и пр. документах, благо интернет сейчас позволяет не рыскать по техническим библиотекам!

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

Похожие темы

  1. 05 функция modbus
    от desperadoes в разделе ПЛК1хх
    Ответов: 15
    Последнее сообщение: 12.02.2014, 12:32
  2. Функция преобразования времени
    от KnDmPetr в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 21.05.2012, 17:26

Ваши права

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