mirror of
https://github.com/emsesp/EMS-ESP32.git
synced 2025-12-07 08:19:52 +03:00
fix rounding of web number-inputs
This commit is contained in:
@@ -249,10 +249,11 @@ char * Helpers::render_value(char * result, const double value, const int8_t for
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t p[] = {0, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000};
|
uint32_t p[] = {1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000};
|
||||||
|
|
||||||
char * ret = result;
|
char * ret = result;
|
||||||
auto whole = (int32_t)value;
|
double v = value < 0 ? value - 1.0 / (2 * p[format]) : value + 1.0 / (2 * p[format]);
|
||||||
|
auto whole = (int32_t)v;
|
||||||
|
|
||||||
itoa(whole, result, 10);
|
itoa(whole, result, 10);
|
||||||
|
|
||||||
@@ -261,7 +262,7 @@ char * Helpers::render_value(char * result, const double value, const int8_t for
|
|||||||
}
|
}
|
||||||
|
|
||||||
*result++ = '.';
|
*result++ = '.';
|
||||||
auto decimal = abs((int32_t)((value - whole) * p[format]));
|
auto decimal = abs((int32_t)((v - whole) * p[format]));
|
||||||
for (int8_t i = 1; i < format; i++) {
|
for (int8_t i = 1; i < format; i++) {
|
||||||
if (decimal < p[i]) {
|
if (decimal < p[i]) {
|
||||||
*result++ = '0'; // add leading zeros
|
*result++ = '0'; // add leading zeros
|
||||||
|
|||||||
Reference in New Issue
Block a user