SCADAMaster,
Судя по всему, ошибка с восприятием float присутствует и в самой скаде, и в модбас-сервере MasterOPC. Да и сдаётся мне, что это не ошибка, а просто разработчики изначально "закладывались" на хранение фиксированного количества нулей после точки, а все меньшие значения понимать как просто ноль. Мол, для реальных величин не нужны такие мизерные или огромные значения. Но это неправильно! Первый же пример (который мне и нужен) - давление в высоковакуумной камере - может меняться от 100000 Па (атмосфера) до 1e-6 Па - то есть в 100 миллиардов раз. А есть и гораздо более "глубокие" величины.
И вообще, в любой системе программирования диапазон стандартного четырёхбайтового float - от 1e-38 до 1e+38 (по показателю степени, коэффициенты не помню), и со знаком +/- разумеется. И любое число из этого диапазона будет храниться с точностью 7 значащих цифр. Так правильно, так везде. А количество цифр после точки - это уже вопрос вкуса отображения. Иногда нужно отображать фиксированное количество цифр после точки. Но не всегда. Далеко не всегда!
То есть если я напишу 0.0000000000123, то это 1.23e-11, а не ноль! На то оно и float - число с плавающей точкой! Исправляйте срочно!




Ответить с цитированием