На форуме обязательно:
  1. Заполнить свой профиль на Русском языке. См. Правила, п.2.d.
  2. Не писать свой вопрос в первую попавшуюся тему, а вместо этого создать свою. См. Правила, п.3.a.

s7-315, округлить REAL до двух знаков после запятой

Метрология, КИП и датчики

Автор темы
jack7277
новенький
новенький
Сообщения: 2
Зарегистрирован: 30 авг 2014, 16:17
Имя: Илья О

s7-315, округлить REAL до двух знаков после запятой

Сообщение jack7277 » 30 авг 2014, 16:21

Есть ли способ обнулить, округлить или отбросить все цифры после второго знака после запятой? Стандартная функция округляет до ближайшего целого.

Было 0.95434534534535 , стало 0.95000000000

Умножил на 100, отбросил дробную часть, потом DI_R назад в REAL и поделил на 100.


VaBo
освоился
освоился
Сообщения: 236
Зарегистрирован: 21 июл 2013, 18:32
Имя: Вадим
Благодарил (а): 7 раз
Поблагодарили: 4 раза

Re: s7-315, округлить REAL до двух знаков после запятой

Сообщение VaBo » 30 авг 2014, 18:06

jack7277 писал(а):Умножил на 100, отбросил дробную часть, потом DI_R назад в REAL и поделил на 100.

Умножить на 100, прибавить 5, далее по тексту...


Автор темы
jack7277
новенький
новенький
Сообщения: 2
Зарегистрирован: 30 авг 2014, 16:17
Имя: Илья О

Re: s7-315, округлить REAL до двух знаков после запятой

Сообщение jack7277 » 30 авг 2014, 20:36

Я не понял почему прибавить 5.


Михайло
почётный участник форума
почётный участник форума
Сообщения: 2419
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
Благодарил (а): 1 раз
Поблагодарили: 58 раз
Контактная информация:

Re: s7-315, округлить REAL до двух знаков после запятой

Сообщение Михайло » 31 авг 2014, 04:09

jack7277 писал(а):Я не понял почему прибавить 5.

jack7277 писал(а):Умножил на 100, отбросил дробную часть, потом DI_R назад в REAL и поделил на 100.

Поправлю: надо прибавить 0,5.
Просто отбрасывание дробной части приведет к округлению к меньшему, а не к ближайшему целому. Правильная функция округления не просто:
INT (x), а INT(x+0,5)

т.е. ROUND(x) = INT(x+0,5)

Например, ROUND(0,9543) = INT (0,9543+0,5) = INT(1,4543) = 1
для сравнения INT (0,9543) = 0