From 88d61e7efa1f9ee60927086e3770e41e69e81e0b Mon Sep 17 00:00:00 2001 From: Ilya Belyakov Date: Fri, 30 Jun 2023 22:30:18 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F?= =?UTF-8?q?=D0=B5=D0=BC=20=D0=B2=20=D1=8F=D0=B4=D1=80=D0=BE=20=D0=BF=D0=BE?= =?UTF-8?q?=D0=B4=D0=B4=D0=B5=D1=80=D0=B6=D0=BA=D1=83=20=D0=BC=D0=BE=D0=B4?= =?UTF-8?q?=D0=B8=D1=84=D0=B8=D0=BA=D0=B0=D1=82=D0=BE=D1=80=D0=B0=20numDig?= =?UTF-8?q?its=20=D0=97=D0=B0=D1=81=D1=82=D0=B0=D0=B2=D0=BB=D1=8F=D0=B5?= =?UTF-8?q?=D1=82=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F=D1=82=D1=8C?= =?UTF-8?q?=20=D0=BD=D0=B5=D0=B7=D0=BD=D0=B0=D1=87=D0=B0=D1=89=D0=B8=D0=B5?= =?UTF-8?q?=20=D0=BD=D1=83=D0=BB=D0=B8=20=D0=B2=20=D1=81=D1=82=D1=80=D0=BE?= =?UTF-8?q?=D0=BA=D0=BE=D0=B2=D0=BE=D0=BC=20=D0=BF=D1=80=D0=B5=D0=B4=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B8=20=D1=86=D0=B5?= =?UTF-8?q?=D0=BB=D0=BE=D0=B9=20=D1=87=D0=B0=D1=81=D1=82=D0=B8=20=D1=87?= =?UTF-8?q?=D0=B8=D1=81=D0=BB=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/classes/IoTItem.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/classes/IoTItem.cpp b/src/classes/IoTItem.cpp index 73918f46..28557848 100644 --- a/src/classes/IoTItem.cpp +++ b/src/classes/IoTItem.cpp @@ -15,6 +15,7 @@ IoTItem::IoTItem(const String& parameters) { if (!jsonRead(parameters, F("multiply"), _multiply, false)) _multiply = 1; if (!jsonRead(parameters, F("plus"), _plus, false)) _plus = 0; if (!jsonRead(parameters, F("round"), _round, false)) _round = -1; + if (!jsonRead(parameters, F("numDigits"), _numDigits, false)) _numDigits = 1; if (!jsonRead(parameters, F("global"), _global, false)) _global = false; @@ -119,9 +120,9 @@ String IoTItem::getRoundValue() { if (_round >= 0 && _round <= 6) { int sot = _round ? pow(10, (int)_round) : 1; value.valD = round(value.valD * sot) / sot; - + //todo: оптимизировать. Вынести расчет строки формата округления, чтоб использовать постоянно готовую char buf[15]; - sprintf(buf, ("%1." + (String)_round + "f").c_str(), value.valD); + sprintf(buf, ("%0" + (String)(_numDigits + _round) + "." + (String)_round + "f").c_str(), value.valD); value.valS = (String)buf; return value.valS; } else {