Не работает precision c типом value в Homeui для Virtual Device

Вот пример подписки на контрол с ограничением вводимого значения в интерфейсе

return defineRule(RuleName + "_" + this.NameVD, {               // Функция подписки на изменение значения топика "/Out_SetFlow", физическое значение уставки расхода в WEB UI 
            whenChanged: self.NameVD + self.nSetOutFlow,                // "/Out_SetFlow"
            then: function (newValue, devName, cellName) {
                                                                        // Проверка введенного кода и его ограничение до расчета (иначе незатухающие изменения - "качели")
                newValue = newValue * self.outRatioGFC;                 // приводим расход к мл/мин  (справка 0,01В = 1 мл/мин) с учетом коэффициента
                if (newValue > self.LimitOutMAX * self.outRatioGFC) {   // Проверяем выход за пределы и если больше то ограничиваем ввод
                    newValue = self.LimitOutMAX;
                    dev[devName + "/" + cellName] = newValue;           // Верхним значением лимита
                } else if (newValue < 0) {                              // Если значение меньше 0 то ограничиваем 
                    newValue = 0;
                    dev[devName + "/" + cellName] = newValue;           // Нижним значением лимита или 0
                };
            },
        });

Что позволяет не дать пользователю ввести не правильное значение в поле в WEB

ну и округление также только через переменные
вначале скрипта указываем необходимую точность


Precision   : 3,                                // Значение до какого знака округлять рассчитанный по таблице калибровки выходной сигнал канала.

this.Precision      = Math.pow (10,DeviceParam.Precision);  // Требуемая точность отображения (знак после запятой) в виджете WEB UI 

далее в коде

return Math.round(GetValue * this.Precision) / this.Precision;    // Быстрое преобразование в число c округлением до заданной точности