Вот это деловой подход!
С такими талантами думаю Вам под силу написать "народную" функцию универсального округления!
С удовольствием добавлю ее в свою библиотеку.
Вид для печати
Вот это деловой подход!
С такими талантами думаю Вам под силу написать "народную" функцию универсального округления!
С удовольствием добавлю ее в свою библиотеку.
Датчики давления со всегда положительными значениями... нда теоретик , а что будет показывать функция ваша, если датчик чуть-чуть свакуумировался (такое бывает сплошь и рядом), или дрожание значения 3.8ма...4.2ма? И ведь пишут теоретики ересь типа real_to_word, а в результате та-дам ни с того ни с сего защиты отработали и...ракета...самолет утонули в мировом океане, хим завод выбросил в окружающую среду какую-то вредную хрень и тд и тп.
А неопытному новичку на форумах нефиг знаний искать!!! Только ответы на конкретные вопросы! А знания надо искать в учебниках, руководствах пользователя и пр. документах, благо интернет сейчас позволяет не рыскать по техническим библиотекам!
Всем привет. Как будет выглядеть функция ROUND на языке ST?
Например такКод:FUNCTION ROUND : REAL
VAR_INPUT
in : REAL;
N : INT; // кол-во знаков от 0 до 5
END_VAR
VAR
X: REAL;
DECADES : ARRAY[0..5] OF REAL := [1.0,10.0,100.0,1000.0,10000.0,100000.0];
END_VAR
___________________________________________________________________
X :=DECADES[LIMIT(0,N,5)];
ROUND := DINT_TO_REAL(REAL_TO_DINT(in * X)) / X; // 1 вариант обрезание
// ROUND := DINT_TO_REAL( TRUNC( 100* ( in+ 0.005 ) ) ) / 100; // 2 вариант округление
Вот проблему нашли, в смысле, на FBD, вроде как ещё 14 миллиардов лет тому назад делали, мне кажется ещё до Большого взрыва:
Вложение 90045
Числа real почти всегда будут иметь в десятичном представлении что угодно, кроме нулей. Поэтому подозреваю, что запрос этой функции - неправильное решение какой-то задачи.
Так для чего требуется округление для чисел типа real?
Дело в том, что в формате чисел real невозможно точно выразить и хранить числа, не являющиеся степенью числа 2. Поэтому округление значения в памяти переменной - просто потеря точности, т.к. число после округления станет чем-то подобным 1,000000001 или 0,999999999, но никак не 1,00000000 - пример условный. Это свойство формата хранения.
Поэтому и интересуюсь - какая задача решалась изначально? Ну не вывод же числа на экран самодельной подпрограммой - вопрос в разделе СПК, который, наверняка, имеет штатный элемент визуализации чисел.
Какая задача решалась изначально?