Большие дроби после операций сложения/вычитания

Добрый день!
Пытаюсь сделать разбивку по тарифам показаний электроэнергии с WB-MAP12H. Сделал скрипт, вроде работает, но как избавится от такой кривизны в веб-интерфейсе?

  1. Откуда берутся такие огромные дроби после запятой? Изначально в показаниях только 5 знаков после запятой, выполняется только операция вычитания, в какой-то момент появляются вот такие огромные дроби.
dev["EnergyDayNight"]["Ch 1 Energy day"] = dev["E1my"]["Ch 1 Active energy"]-dev["EnergyDayNight"]["Ch 1 Energy night"]-Ch1init;

Полный код ниже.

  1. Пробовал применить функцию .toFixed(2) - вот так:
dev["EnergyDayNight"]["Ch 1 Energy day"] = (dev["E1my"]["Ch 1 Active energy"]dev["EnergyDayNight"]["Ch 1 Energy night"]-Ch1init).toFixed(2);

значения просто не записываются, хотя в отладке видно, что округление происходит.

  1. Как сделать корректную сортировку ячеек виртуального устройства? Чтобы после 1 шло 2, 3, а не 10, 11?

tariff_change.json (11.1 КБ)

работать не будет, потому что возвращает текст. Попробуйте обратно : parseFloat(number.toFixed())

Спасибо, так работает!

А по поводу сортировки ячеек, это как-то настраивается? В реальных устройствах ячейки правильно сортируются, а в виртуальных нет.