Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?

Официальный форум Simple-Scada.

Автор Тема: Экспоненциальное отображение малых величин  (Прочитано 2484 раз)

troynik77

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Доброго времени суток! Не могу победить проблему отображения малых величин в экспоненциальном виде:
имеется аналоговый вход, на который приходит 0-10В значения вакуума. После логарифмического преобразования
получается цифры в диапазоне от 1000 до 0.000000000001 (Торр). Естественно, такие малые величины проще для восприятия
в экспоненциальном виде, например 6.7Е-09 . Но выходит, что до порядка Е-05 этот вариант отображения переменной
происходит нормально,а ниже (Е-06) происходит округление, вплоть до потери экспоненты (значение 0.00000001 уже отображается как 0Е00). Подскажите,пожалуйста решение отображения этих насущных в нашей отрасли цифр >:(
« Изменён: 30 Апреля 2020, 11:39:11 от Simple-Scada »

Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
Здравствуйте.

Возможно Вам не хватает точности типа данных Single. Используйте тип Double, у него точность выше. Во вложении пример отображения в научном формате.

troynik77

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Нет, Double не спасает. Тот же single отображается в обычном выражении до 0.00000000001,т.е. 1Е-11, видимо что-то с функцией, которая позволяет перевести формат в "научный", ограничена 8ю цифрами. На фото красным обведены 2 окна, в них две равные друг другу переменные одного формата, просто в одном включено преобразование, в другом нет.

pan2000

  • Постоялец
  • ***
  • Сообщений: 226
    • Просмотр профиля
    Здравствуйте!

  Так и не удалось заставить Ваш пример некорректно отображать число в экспоненциальной форме. Точность данных, равно как и тип (за исключением данных с фиксированным форматированием - DateTime и String) для переменной, используемой только для связи с объектом, не имеет никакого значения. В примере из вложения одна из переменных имеет тип Boolean, а другая - Byte (так делать не следует, но для иллюстрации сгодится).

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


Simple-Scada

  • Администратор
  • *****
  • Сообщений: 3214
    • Просмотр профиля
    • Simple-Scada
troynik77, у нас тоже не получилось воспроизвести проблему. Используя код из приведённого Вами скрина, тип данных Single, формат переменной "#.#E-00" и степень 1.21, получаем результат как на скрине во вложении. Округления до 2 не происходит. Вы используете одну из последних версий скады (2.3.6.0 и выше)? Вышлите текущую версию проекта на support@simple-scada.com, мы проверим и возможно выявим почему в этом проекте происходит округление.

troynik77

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
pan2000, спасибо,опробую ваш вариант. Администратор, я отправил на почту сжатый проект,скада 2.3.6.3, спасибо за поддержку!

troynik77

  • Новичок
  • *
  • Сообщений: 4
    • Просмотр профиля
Вобщем действительно, после обновления до 2.3.6.11 проблема исчезла,также загадочно,как и появилась. Всем спасибо!