From b5f75ef0bc7322cb1df29b38aef75632915c94d9 Mon Sep 17 00:00:00 2001 From: Redume Date: Fri, 10 Jan 2025 00:54:59 +0300 Subject: [PATCH] feat: add support for grouping separators and precise handling of small numbers in format_number --- utils/format_number.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/utils/format_number.py b/utils/format_number.py index 6012c7f..7759bab 100644 --- a/utils/format_number.py +++ b/utils/format_number.py @@ -3,10 +3,12 @@ from decimal import Decimal def format_number(number): number = Decimal(str(number)) - formatted_integer_part = '{:,.0f}'.format(number).replace(',', ' ') + formatted_integer_part = '{:,.0f}'.format(number // 1).replace(',', ' ') + fractional_part = f"{number % 1:.30f}".split('.')[1] - if '.' in str(number): - fractional_part = str(number).split('.')[1][:3] - return formatted_integer_part + '.' + fractional_part - else: - return formatted_integer_part + if int(fractional_part) == 0: + return formatted_integer_part + '' + + significant_start = next((i for i, char in enumerate(fractional_part) if char != '0'), len(fractional_part)) + result_fractional = fractional_part[:significant_start + 3] + return formatted_integer_part + '.' + result_fractional