Segnetics

Вернуться   Segnetics > Форум Segnetics > Вопросы о программировании

Вопросы о программировании Вопросы, касающиеся программирования на FBD

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.04.2012, 13:57   #1
dima
Senior Member
 
Регистрация: Jun 2008
Адрес: солнечный Алтай
Сообщения: 161
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Число Real: уменьшить кол-во знаков после запятой

У меня число указанного формата передается в ОРС-сервер, скаду использовать пока не планируется, а смотреть прям в сервере это число надо. Но кол-во знаков после запятой 10, кажется. Каким приемом в SMLogic можно сделать так, чтоб передавался один или два знака после запятой, округлить, короче
dima вне форума   Ответить с цитированием
Старый 04.04.2012, 14:24   #2
Arsie
Сотрудник Segnetics
 
Аватара для Arsie
 
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 019
Благодарил(а): 15 раз(а)
Поблагодарили: 655 раз(а) в 599 сообщениях
По умолчанию Ответ: Число Real: уменьшить кол-во знаков после запятой

Цитата
Сообщение от dima
У меня число указанного формата передается в ОРС-сервер, скаду использовать пока не планируется, а смотреть прям в сервере это число надо. Но кол-во знаков после запятой 10, кажется. Каким приемом в SMLogic можно сделать так, чтоб передавался один или два знака после запятой, округлить, короче
Ответ на ваш вопрос: умножить на нужное количество порядков (т.е. на 10 или 100), округлить, поделить на то же количество порядков.

Ответ на то, что вы хотели на самом деле спросить: округление никак не поможет. Серверы не предназначены для того, чтобы их использовали как законченное средство мониторинга, поэтому никаких настроек формата вывода не имеют. Вы в любом случае будете видеть число с кучей знаков после запятой.

В математике отсутствует понятие "кол-во знаков после запятой", есть лишь допустимая точность расчётов. То, о чём вы говорите правильно называется форматом вывода на экран. Что к контроллеру и к лоджику не имеет абсолютно никакого отношения.


__________________
Программа делает то что написал программист, а не то что он хотел.

Добро всегда побеждает зло. Кто победил - тот и добрый.
Arsie сейчас на форуме   Ответить с цитированием
Старый 04.04.2012, 14:26   #3
Nick
Сотрудник Segnetics
 
Аватара для Nick
 
Регистрация: Feb 2010
Сообщения: 132
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Число Real: уменьшить кол-во знаков после запятой

Цитата
Сообщение от dima
У меня число указанного формата передается в ОРС-сервер, скаду использовать пока не планируется, а смотреть прям в сервере это число надо. Но кол-во знаков после запятой 10, кажется. Каким приемом в SMLogic можно сделать так, чтоб передавался один или два знака после запятой, округлить, короче
передаваться будет только число float в формате числа float. тут не оговорено число знаков после запятой. в стандарте оговорено сколько бит отводится на хранение мантисы сколько на хранение експоненты и бит на знак. впрочем почитайте - http://ru.wikipedia.org/wiki/%D0%A7%...81%D1%82%D0%B8

сколько знаков из float будет будет отображаться в строке, определяется функциями преобразования-форматирования из float в строку.
Nick вне форума   Ответить с цитированием
Старый 01.06.2017, 20:45   #4
BraS
Новичок
 
Регистрация: May 2017
Сообщения: 6
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
По умолчанию Ответ: Число Real: уменьшить кол-во знаков после запятой

Добрый день. А если необходимо вывести на дисплей контроллера, например, - частоту с отображением до десятых герца, то правильно ли я понял, что нужно будет
Цитата умножить на нужное количество порядков (т.е. на 10 или 100), округлить, поделить на то же количество порядков.
? Округление при помощи перевода в Int и обратно?
BraS вне форума   Ответить с цитированием
Старый 01.06.2017, 20:50   #5
младшой
Senior Member
 
Регистрация: May 2010
Адрес: Москва
Сообщения: 857
Благодарил(а): 4 раз(а)
Поблагодарили: 85 раз(а) в 66 сообщениях
По умолчанию Ответ: Число Real: уменьшить кол-во знаков после запятой

Умножайте real на 10 (100, 1000, ...) конвертируйте в int и считывайте в таком виде.
На стороне сервера делите на то же число.
младшой вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB code is Вкл.
[IMG] код Вкл.
HTML код Выкл.



Часовой пояс GMT +4, время: 16:45.


Версия vBulletin: 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Segnetics 2005 - 2023