Профиль должен быть заполнен на русском языке кириллицей. Заполнение профиля заведомо ложными или некорректными данными - причина возможного отказа в регистрации на форуме.

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
осмотрелся
осмотрелся
Сообщения: 191
Зарегистрирован: 21 июл 2013, 18:32
Ф.И.О.: Вадим
Благодарил (а): 6 раз
Поблагодарили: 2 раза

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.


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

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


Вернуться в «КИП и датчики»



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость