This is topic Округление вещественного числа in forum Языки программирования в TRACE MODE 6 / Algorithm Programming Languages at Форум TRACE MODE: техническая поддержка.
Добрый день, уважаемая техническая поддержка. Возникли проблемы с вещественными числами. Получаю данные в двух запросах CALL.ChGroupReq целую и дробную части. Объединение этих частей произвожу в программе путем сложения, но на выходе из программы данные искажаются.
Пример: целая часть - 14098 дробная часть - 0,7398 после преобразования - 14098,7402
P.S. Тип целой части INT, а дробной и результата FLOAT.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
FLOAT по стандарту поддерживает только 6 значащих цифр. Чтобы получить более высокую точность, надо использовать формат LREAL. Такой результат можно сохранять в канале DFLOAT.
Надо иметь в виду, что архивирование такого канала будет осуществляться в формате FLOAT.
Posted by Nicolay B. (Участник № / Member № 4338) on :
Результат совсем не тот какой нужен.
В программе пытался делать смещение дробной части умножением, но без успешно. Может есть ещё какой нибудь способ объединить целую и дробную части числа?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Результат математически точен.
Формат его отображения в окне "Просмотр компонентов" жесткий. Но на экране и в документе Вы можете задать нужный Вам формат.
Какими средствами Вы предполагаете получать исходные данные для программы? Каковы метрологические характеристики источника данных и измерительного канала в целом? Каким образом Вы собираетесь использовать результат "сложения"? Насколько метрологически обосновано использование формата DFLOAT?
Posted by Nicolay B. (Участник № / Member № 4338) on :
Задал формат на экране и всё получилось.
Исходные данные получаю по ModBusRTU. Двумя функциями Rin_Word(4)(целая часть) и Rin_Float(4)(дробная часть). Измерять собираюсь потребляемое тепло прибором ТСРВ-024М. Для начала вывод полученного результата на экран АРМа, а в дальнейшем и запись в БД для анализа тепло потребления. Коммерческий учет требует более точного измерения.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Тепловычислитель ТСРВ-024М, согласно его документации, измеряет количество теплоты с точностью +- 0.5%. Это значит, что уже в целом числе 14098 погрешность составляет +- 70. В этих условиях работать с "дробной частью" метрологически нет оснований. При сдаче проекта метрологической экспертизе это будет признано некорректным.