Посмотрел этот макрос, вот преобразование самого большого по модулю отрицательного числа:
INT_TO_FLOAT_10.PNG
Никакой погрешности там нет! Зачем было обманывать, мне не понятно в принципе!
Этот макрос для преобразования диапазона INT(INT16), для преобразования DINT(INT32) он не подходит!
Собственно для этого и усовершенствовал макрос, он чуть ниже, я его на скриншоте показывал(к которому у Вас претензий нет), он уже универсальный в смысле диапазона INT(INT16)/DINT(INT32), настройки в свойствах макроса!
Короче, не заметил настроек у вашего макроса, он универсальный или только диапазона DINT(INT32)?
Обычно используется диапазон INT(INT16), например во всех овенских ТРМ-ах!