function round(num, numDecimalPlaces) local mult = 10^(numDecimalPlaces or 0) return math.floor(num * mult + 0.5) / mult end -- obj { nam = 'тепло'; pri = -100; disp = function (s) p ('тепло ', string.format("%.3f", hot),'/', hotmax); end; }Вышеуказанное при вычитании из 24 чисел по 0.6 - при чистом нуле hot выводит -0.000
Далее, всё то же самое только заменена сторочка:
p ('тепло ', string.format("%.3f", round(hot,2)),'/', hotmax);При достижении чистого нуля выводится всё корректно, т.е. 0.000