mirror of
https://github.com/python/cpython.git
synced 2025-08-01 07:33:08 +00:00
Issue #6857: Fix Decimal formatting to be consistent with existing float
formatting: both are now right-aligned by default.
This commit is contained in:
parent
81809a42c1
commit
5cfa8044ff
3 changed files with 9 additions and 2 deletions
|
@ -5497,7 +5497,10 @@ def _parse_format_specifier(format_spec, _localeconv=None):
|
||||||
raise ValueError("Alignment conflicts with '0' in "
|
raise ValueError("Alignment conflicts with '0' in "
|
||||||
"format specifier: " + format_spec)
|
"format specifier: " + format_spec)
|
||||||
format_dict['fill'] = fill or ' '
|
format_dict['fill'] = fill or ' '
|
||||||
format_dict['align'] = align or '<'
|
# PEP 3101 originally specified that the default alignment should
|
||||||
|
# be left; it was later agreed that right-aligned makes more sense
|
||||||
|
# for numeric types. See http://bugs.python.org/issue6857.
|
||||||
|
format_dict['align'] = align or '>'
|
||||||
|
|
||||||
# default sign handling: '-' for negative, '' for positive
|
# default sign handling: '-' for negative, '' for positive
|
||||||
if format_dict['sign'] is None:
|
if format_dict['sign'] is None:
|
||||||
|
|
|
@ -712,6 +712,7 @@ class DecimalFormatTest(unittest.TestCase):
|
||||||
('', '1.00', '1.00'),
|
('', '1.00', '1.00'),
|
||||||
|
|
||||||
# test alignment and padding
|
# test alignment and padding
|
||||||
|
('6', '123', ' 123'),
|
||||||
('<6', '123', '123 '),
|
('<6', '123', '123 '),
|
||||||
('>6', '123', ' 123'),
|
('>6', '123', ' 123'),
|
||||||
('^6', '123', ' 123 '),
|
('^6', '123', ' 123 '),
|
||||||
|
@ -741,7 +742,7 @@ class DecimalFormatTest(unittest.TestCase):
|
||||||
(',', '-1234567', '-1,234,567'),
|
(',', '-1234567', '-1,234,567'),
|
||||||
(',', '-123456', '-123,456'),
|
(',', '-123456', '-123,456'),
|
||||||
('7,', '123456', '123,456'),
|
('7,', '123456', '123,456'),
|
||||||
('8,', '123456', '123,456 '),
|
('8,', '123456', ' 123,456'),
|
||||||
('08,', '123456', '0,123,456'), # special case: extra 0 needed
|
('08,', '123456', '0,123,456'), # special case: extra 0 needed
|
||||||
('+08,', '123456', '+123,456'), # but not if there's a sign
|
('+08,', '123456', '+123,456'), # but not if there's a sign
|
||||||
(' 08,', '123456', ' 123,456'),
|
(' 08,', '123456', ' 123,456'),
|
||||||
|
|
|
@ -366,6 +366,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #6857: Default format() alignment should be '>' for Decimal
|
||||||
|
instances.
|
||||||
|
|
||||||
- Issue #6795: int(Decimal('nan')) now raises ValueError instead of
|
- Issue #6795: int(Decimal('nan')) now raises ValueError instead of
|
||||||
returning NaN or raising InvalidContext. Also, fix infinite recursion
|
returning NaN or raising InvalidContext. Also, fix infinite recursion
|
||||||
in long(Decimal('nan')).
|
in long(Decimal('nan')).
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue