Цитата:
Вроде понял, что Вы хотите
Не совсем
Цитата:
В смысле всегда использовать один макрос DINT(INT32)_TO_FLOAT.
Не только. Особенность целочисленных вычислений - абсолютная точность.
В целых никогда не будет x = (x + y) если y <> 0
Цитата:
Если надо преобразовать INT(INT16),
int16 может только извне прилететь. А внутренним вычислениям все равно.
Цитата:
чаще всё-таки INT(INT16) встречается, а DINT(INT32) намного реже.
Да? А что тогда здесь udint а не uint? Нету противоречий?
В 16-ти битах было тесно даже 50лет назад. А необходимость 64-х битов даже сейчас - экзотика.
Цитата:
чем ваше промежуточное преобразование в DINT(INT32).
Оно есть только в 1 случае - если извне пришло int16. И оно 1 раз. Далее нет никакой необходимости выбирать между 16 и 32 и думать - влезут ли промежуточные вычисления в 16 бит. А к моменту когда вычисления не влезают в 32 бита, float уже давно положил на точность.
Цитата:
Вам надо всё равно знать, что это INT(INT16),
И Вам все равно надо это знать. Давайте не будем общую (мою и Вашу) часть проблем называть моей проблемой?
Цитата:
И, мне кажется в FBD проще значение INT(INT16) сразу преобразовать во FLOAT,
Вам кажется. Любое целое во флоат везде одинаково просто. Касаемо ST - я приводил выше эти 5 строк.
Цитата:
Если Вы говорите в ST это проще, поверю Вам на слово(я в ST не шарю), но это получается частный случай, не более!
Я понимаю что ссылки по Вашим ссылкам доходят до "времен Очакова и покоренья Крыма" (практически буквально) - но ST какой никакой уже есть. Что касается частных случаев, то всё на ФБД и т.п графическом является частным случаем текстовых языков а не наоборот.