From 7f856a251f1dcedb3595ca3c19cfff9389582a05 Mon Sep 17 00:00:00 2001 From: donovaly Date: Thu, 3 Dec 2020 04:54:15 +0100 Subject: [PATCH] tolerances can be negative, thus the decimal precision check must be adapted --- src/Mod/TechDraw/App/DrawViewDimension.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Mod/TechDraw/App/DrawViewDimension.cpp b/src/Mod/TechDraw/App/DrawViewDimension.cpp index 6b30f43f29..fa575c52d1 100644 --- a/src/Mod/TechDraw/App/DrawViewDimension.cpp +++ b/src/Mod/TechDraw/App/DrawViewDimension.cpp @@ -724,12 +724,12 @@ std::string DrawViewDimension::formatValue(qreal value, QString qFormatSpec, int #endif // if abs(1 - userVal / formattedValue) > 0.1 we know that we make an error greater than 10% // then we need more digits - if (abs(userVal - formattedValue.toDouble()) > 0.1 * userVal) { + if (abs(userVal - formattedValue.toDouble()) > 0.1 * abs(userVal)) { int i = 1; do { // increase decimals step by step until error is < 10 % formattedValue = QLocale().toString(userVal, 'f', i); ++i; - } while (abs(userVal - loc.toDouble(formattedValue)) > 0.1 * userVal); + } while (abs(userVal - loc.toDouble(formattedValue)) > 0.1 * abs(userVal)); // We purposely don't reset the formatSpecifier. // Why "%.1f" is overwritten for a value of e.g. "0.001" is obvious, // moreover such cases only occurs when