Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 27

Тема: Как округлить значение в STRING?

  1. #1

    Exclamation Как округлить значение в STRING?

    Необходимо чтобы при преобразовании REAL_TO_STRING, значение переменной
    округлялось до второго знака после запятой. Т.е. REAL_TO_STRING(XXX) при значении "X",
    например 1.111111, значение STRING было бы 1.11, а не 1.111111. Как это осуществить?

  2. #2
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,248

    По умолчанию

    попробуйте так
    Изображения Изображения
    • Тип файла: jpg owen.jpg (24.2 Кб, Просмотров: 201)

  3. #3

    Exclamation

    Цитата Сообщение от capzap Посмотреть сообщение
    попробуйте так
    Спасибо, помогло! А как быть если foo=0.111111? Выдаёт в STRING ".11", а хотелось чтобы было "0.11"?

  4. #4
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,248

    По умолчанию

    проверяйте, если точка занимает первое знакоместо то добавляете ноль в начало строки, это Вам в качестве домашнего задания

  5. #5

    Exclamation

    Цитата Сообщение от capzap Посмотреть сообщение
    проверяйте, если точка занимает первое знакоместо то добавляете ноль в начало строки, это Вам в качестве домашнего задания
    Не хотелось бы это в ручную делать, в зависимости от значения переменной (1.111111 или 0.111111), хотелось бы чтобы результат был всегда 1.11 или 0.11, без ручного добавления "0" в начало строки, как Вы пишите...
    Это возможно сделать?

  6. #6
    Пользователь
    Регистрация
    13.10.2011
    Адрес
    Златоуст
    Сообщений
    1,021

    По умолчанию

    Код:
    PROGRAM PLC_PRG
    VAR
    	pi: REAL := 3.141592;
    	str: STRING;
    END_VAR
    
    str := REAL_TO_STRING(REAL_TO_INT(pi * 100) / REAL#100);
    Но если для визуализации, то там всё проще. См. справку.

  7. #7

    Exclamation

    Цитата Сообщение от Yegor Посмотреть сообщение
    Код:
    PROGRAM PLC_PRG
    VAR
    	pi: REAL := 3.141592;
    	str: STRING;
    END_VAR
    
    str := REAL_TO_STRING(REAL_TO_INT(pi * 100) / REAL#100);
    Но если для визуализации, то там всё проще. См. справку.
    Нет, не для визуализации. Для SysLibFile нужно. Ваш пример выдаёт
    '6.5e-1' при 0.6462781, а надо "0.64"...

  8. #8
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,248

    По умолчанию

    Цитата Сообщение от lava_02 Посмотреть сообщение
    Не хотелось бы это в ручную делать, в зависимости от значения переменной (1.111111 или 0.111111), хотелось бы чтобы результат был всегда 1.11 или 0.11, без ручного добавления "0" в начало строки, как Вы пишите...
    Это возможно сделать?
    А кто говорил про ручное добавление, команда FIND, изучайте принцип работы и вникайте в моё изложение логической цепочки

  9. #9
    Пользователь Аватар для rovki
    Регистрация
    03.01.2010
    Адрес
    Чехов
    Сообщений
    12,125

    По умолчанию

    Цитата Сообщение от lava_02 Посмотреть сообщение
    0.6462781, а надо "0.64"...
    Строго говоря это не округление
    электронщик до мозга костей и не только

  10. #10
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,248

    По умолчанию

    Цитата Сообщение от rovki Посмотреть сообщение
    Строго говоря это не округление
    соглашусь, тогда так
    Код:
    bar := INT_TO_STRING(REAL_TO_INT(foo*100));
    bar := INSERT( bar,'.',LEN(bar)-2);
    IF FIND(bar,'.')=1 THEN
    	bar := INSERT( bar,'0',0);
    ELSIF bar = '0' THEN
    	bar := '0.00';
    END_IF;

Страница 1 из 3 123 ПоследняяПоследняя

Похожие темы

  1. Длинный STRING
    от Nazar в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 08.03.2011, 13:04
  2. Ответов: 1
    Последнее сообщение: 28.01.2011, 16:42
  3. Преобразование из string
    от Dima_31 в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 07.05.2010, 20:35
  4. String переменные в архиваторе
    от Антон в разделе ПЛК1хх
    Ответов: 9
    Последнее сообщение: 25.12.2007, 10:53

Ваши права

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