From 5a9de53e3c67399b250072557cf19e3e18fee55b Mon Sep 17 00:00:00 2001 From: =?utf8?q?J=C3=A9r=C3=B4me=20Benoit?= Date: Fri, 8 Aug 2025 19:31:20 +0200 Subject: [PATCH] fix(qav3): handle trailing zeros properly at number formatting MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Signed-off-by: Jérôme Benoit --- quickadapter/user_data/strategies/Utils.py | 29 +++++++++++++--------- 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/quickadapter/user_data/strategies/Utils.py b/quickadapter/user_data/strategies/Utils.py index 5bef67f..826d9bc 100644 --- a/quickadapter/user_data/strategies/Utils.py +++ b/quickadapter/user_data/strategies/Utils.py @@ -127,22 +127,27 @@ def format_number(value: int | float, significant_digits: int = 5) -> str: abs_value = abs(value) if abs_value >= 1.0: - return f"{value:.{significant_digits}f}" + precision = significant_digits + else: + value_str = f"{abs_value:.18f}" + first_digit_pos = -1 + for i, char in enumerate(value_str): + if char > "0" and char <= "9": + first_digit_pos = i + break - value_str = f"{abs_value:.18f}" - first_digit_pos = -1 - for i, char in enumerate(value_str): - if char > "0" and char <= "9": - first_digit_pos = i - break + if first_digit_pos == -1: + precision = significant_digits + else: + leading_zeros = first_digit_pos - 2 + precision = leading_zeros + significant_digits - if first_digit_pos == -1: - return f"{value:.{significant_digits}f}" + formatted_value = f"{value:.{precision}f}" - leading_zeros = first_digit_pos - 2 - required_precision = leading_zeros + significant_digits + if "." in formatted_value: + formatted_value = formatted_value.rstrip("0").rstrip(".") - return f"{value:.{required_precision}f}" + return formatted_value @lru_cache(maxsize=128) -- 2.43.0