И я благодарю. Вопросы были. Прочел и понял свое.
И я благодарю. Вопросы были. Прочел и понял свое.
Недорого купить анальный плаг с доставкой
round_real = INT_TO_REAL( TRUNC( 100 * ( X_real + 0.005 ) ) ) / 100;
Здравствуйте форумчане. Так в итоге мне непонятно, как округлить допустим
x:=-34,37563245;
y:=x;
как сделать так, чтоб y = -34,4
Здравствуйте форумчане. Так в итоге мне непонятно, как округлить допустим
x:=-34,37563245;
y:=x;
как сделать так, чтоб y = -34,4
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
Да серьезно. Если Вы не знаете что в тип WORD помещается максимум 5 цифр, то можно в N и 6 и 7 подставлять. Кому надо может выходной тип на DWORD заменить, а кто хочет мега универсальную функцию с защитой от дурака снабдить ее проверками.
w:dword;
f:real;
w:=REAL_TO_DWORD(f*10);
w:=w/10+BOOL_TO_DWORD((w MOD 10)>4));
Ничего плохого я в циклах не вижу, чтобы лишний раз их не использовать. Краткость некомпилированного кода не означает быстроту его работы. Те кто программировал на ассемблере знают, например, что логический сдвиг вправо на 1 работает на порядок быстрее, чем деление на 2. И таких примеров масса. Так, например, цикл с простыми операциями может работать быстрее, чем одна сложная операция. На слабых процессорах скорость выполнения кода лично для меня имеет более высокую ценность, чем его длина.
Ваше дополнение имеет большую пользу для читателей форума, аккумулируя знания по конкретной теме.
На данном форуме не хватает спойлера с кодом "народной" функции, отличающейся универсальносью и производительностью.
offtop:
А лично Вас, capzap, я бы хотел попросить немного изменить стиль повествования с высокомерного на нейтральный, дабы не превращать источник знаний в срач. И я говорю не только об этой теме, а обо всех Ваших многочисленных публикациях. Спасибо, что Вы уделяете много времени для развития базы знаний АСУшников.
Последний раз редактировалось Cbug; 13.02.2020 в 10:40.
Да... ребята. Прямо сборище интеллектуалов!
Надеюсь, что тот неопытный новичок который придет сюда за знаниями сможет найти здесь что-то из большой кучи безполезных постов.
Функция реально рабочая - преобразует значения датчиков давления (со всегда положительными значениями) в регистр modbus, для последующего отображения на hmi со смещением десятичной точки.
Заменить типы переменных на какие кому необходимо не составит труда.