Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 7303b59

Browse files
committed
Merged revisions 70444 via svnmerge from
svn+ssh://[email protected]/python/trunk ........ r70444 | mark.dickinson | 2009-03-18 08:22:51 +0000 (Wed, 18 Mar 2009) | 3 lines Fix bug in _insert_thousands_sep: too much zero padding could be added for 'n' formats with non-repeating thousands-separator. ........
1 parent 79f5203 commit 7303b59

2 files changed

Lines changed: 23 additions & 2 deletions

File tree

Lib/decimal.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5690,8 +5690,6 @@ def _insert_thousands_sep(digits, spec, min_width=1):
56905690

56915691
groups = []
56925692
for l in _group_lengths(grouping):
5693-
if groups:
5694-
min_width -= len(sep)
56955693
if l <= 0:
56965694
raise ValueError("group length should be positive")
56975695
# max(..., 1) forces at least 1 digit to the left of a separator
@@ -5701,6 +5699,7 @@ def _insert_thousands_sep(digits, spec, min_width=1):
57015699
min_width -= l
57025700
if not digits and min_width <= 0:
57035701
break
5702+
min_width -= len(sep)
57045703
else:
57055704
l = max(len(digits), min_width, 1)
57065705
groups.append('0'*(l - len(digits)) + digits[-l:])

Lib/test/test_decimal.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -798,6 +798,28 @@ def get_fmt(x, locale, fmt='n'):
798798
self.assertEqual(get_fmt(123456789, ru_RU, '.6n'), '1,23457e+8')
799799
self.assertEqual(get_fmt(123456789, crazy, '.6n'), '1&23457e+8')
800800

801+
# zero padding
802+
self.assertEqual(get_fmt(1234, fr_FR, '03n'), '1234')
803+
self.assertEqual(get_fmt(1234, fr_FR, '04n'), '1234')
804+
self.assertEqual(get_fmt(1234, fr_FR, '05n'), '01234')
805+
self.assertEqual(get_fmt(1234, fr_FR, '06n'), '001234')
806+
807+
self.assertEqual(get_fmt(12345, en_US, '05n'), '12,345')
808+
self.assertEqual(get_fmt(12345, en_US, '06n'), '12,345')
809+
self.assertEqual(get_fmt(12345, en_US, '07n'), '012,345')
810+
self.assertEqual(get_fmt(12345, en_US, '08n'), '0,012,345')
811+
self.assertEqual(get_fmt(12345, en_US, '09n'), '0,012,345')
812+
self.assertEqual(get_fmt(12345, en_US, '010n'), '00,012,345')
813+
814+
self.assertEqual(get_fmt(123456, crazy, '06n'), '1-2345-6')
815+
self.assertEqual(get_fmt(123456, crazy, '07n'), '1-2345-6')
816+
self.assertEqual(get_fmt(123456, crazy, '08n'), '1-2345-6')
817+
self.assertEqual(get_fmt(123456, crazy, '09n'), '01-2345-6')
818+
self.assertEqual(get_fmt(123456, crazy, '010n'), '0-01-2345-6')
819+
self.assertEqual(get_fmt(123456, crazy, '011n'), '0-01-2345-6')
820+
self.assertEqual(get_fmt(123456, crazy, '012n'), '00-01-2345-6')
821+
self.assertEqual(get_fmt(123456, crazy, '013n'), '000-01-2345-6')
822+
801823

802824
class DecimalArithmeticOperatorsTest(unittest.TestCase):
803825
'''Unit tests for all arithmetic operators, binary and unary.'''

0 commit comments

Comments
 (0)