Возникла проблема с выводом на экран чисел с точкой(на данный момент у меня в поле объекта отображаются одни нули)
часть макроса выглядит следующим образом:
float ttt
ttt = m/Stepen(23)
SetData(ttt, "Local HMI", LW, 200, 1)
где m-integer
функция Stepen(23) - возвращает 2 в 23 степени, что в конечном счете является тоже является integer,
но результат операции деления точно float
для отображения использую объект "числа", в котором указывают 32 bit float, справа и слева от точки ставлю максимальные значения равные 11.
Что я не учел? Где моя ошибка?
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
EasyBuilder 8000 - float
Модераторы: Глоб.модераторы, специалисты по PLC
-
- здесь недавно
- Сообщения: 30
- Зарегистрирован: 02 июл 2014, 15:49
- Имя: Надыров Булат Наилович
- Забанен: Бессрочно
-
- частый гость
- Сообщения: 462
- Зарегистрирован: 31 июл 2010, 09:12
- Имя: Павел
- Страна: РФ
- Благодарил (а): 10 раз
- Поблагодарили: 17 раз
Re: EasyBuilder 8000 - float
Откуда такая информация? Вообще-то еще со времен Си результат операции деления целых чисел равен целой части частного. Судя по всему, это же справедливо и для макросов Weintek:Booker писал(а): но результат операции деления точно float
Код: Выделить всё
//example 1
float f
int m = 30
int n = 20
f = m / n //f == 1.0
//example 2
float f
int m = 10
int n = 20
f = m / n //f == 0.0
Ваш код можно исправить примерно так:
Код: Выделить всё
float ttt
ttt = m
ttt = ttt/Stepen(23)
SetData(ttt, "Local HMI", LW, 200, 1)
-
- здесь недавно
- Сообщения: 87
- Зарегистрирован: 19 май 2014, 08:48
- Имя: Егор Дмитриевич Ченчуков
- Страна: Россия
Re: EasyBuilder 8000 - float
в макросах Weintek нет операторов преобразований типов данных, например
(float)
(integer)
(*float)
(*integer)
поэтому во избежание неоднозначностей я бы явно привел числитель и знаменатель (BUFFER) к float, а потом делил бы
[/quote]
(float)
(integer)
(*float)
(*integer)
поэтому во избежание неоднозначностей я бы явно привел числитель и знаменатель (BUFFER) к float, а потом делил бы
Код: Выделить всё
float ttt
FLOAT BUFFER
ttt = m
BUFFER=Stepen(23)
ttt = ttt/BUFFER
SetData(ttt, "Local HMI", LW, 200, 1)