summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_float.py
diff options
context:
space:
mode:
authorSergey B Kirpichev <skirpichev@gmail.com>2025-02-25 15:27:07 (GMT)
committerGitHub <noreply@github.com>2025-02-25 15:27:07 (GMT)
commitf39a07be47cd9219eaf0e538ae32ad8239c88e66 (patch)
tree1b57568378401b44c9ffd8d3f237b13694842b5c /Lib/test/test_float.py
parentfa6a8140dd2a72da6df2a7dfafbf07045debf64d (diff)
downloadcpython-f39a07be47cd9219eaf0e538ae32ad8239c88e66.zip
cpython-f39a07be47cd9219eaf0e538ae32ad8239c88e66.tar.gz
cpython-f39a07be47cd9219eaf0e538ae32ad8239c88e66.tar.bz2
gh-87790: support thousands separators for formatting fractional part of floats (#125304)
```pycon >>> f"{123_456.123_456:_._f}" # Whole and fractional '123_456.123_456' >>> f"{123_456.123_456:_f}" # Integer component only '123_456.123456' >>> f"{123_456.123_456:._f}" # Fractional component only '123456.123_456' >>> f"{123_456.123_456:.4_f}" # with precision '123456.1_235' ```
Diffstat (limited to 'Lib/test/test_float.py')
-rw-r--r--Lib/test/test_float.py22
1 files changed, 22 insertions, 0 deletions
diff --git a/Lib/test/test_float.py b/Lib/test/test_float.py
index f588e16..231b104 100644
--- a/Lib/test/test_float.py
+++ b/Lib/test/test_float.py
@@ -754,6 +754,28 @@ class FormatTestCase(unittest.TestCase):
self.assertEqual(format(INF, 'f'), 'inf')
self.assertEqual(format(INF, 'F'), 'INF')
+ # thousands separators
+ x = 123_456.123_456
+ self.assertEqual(format(x, '_f'), '123_456.123456')
+ self.assertEqual(format(x, ',f'), '123,456.123456')
+ self.assertEqual(format(x, '._f'), '123456.123_456')
+ self.assertEqual(format(x, '.,f'), '123456.123,456')
+ self.assertEqual(format(x, '_._f'), '123_456.123_456')
+ self.assertEqual(format(x, ',.,f'), '123,456.123,456')
+ self.assertEqual(format(x, '.10_f'), '123456.123_456_000_0')
+ self.assertEqual(format(x, '.10,f'), '123456.123,456,000,0')
+ self.assertEqual(format(x, '>21._f'), ' 123456.123_456')
+ self.assertEqual(format(x, '<21._f'), '123456.123_456 ')
+ self.assertEqual(format(x, '+.11_e'), '+1.234_561_234_56e+05')
+ self.assertEqual(format(x, '+.11,e'), '+1.234,561,234,56e+05')
+
+ self.assertRaises(ValueError, format, x, '._6f')
+ self.assertRaises(ValueError, format, x, '.,_f')
+ self.assertRaises(ValueError, format, x, '.6,_f')
+ self.assertRaises(ValueError, format, x, '.6_,f')
+ self.assertRaises(ValueError, format, x, '.6_n')
+ self.assertRaises(ValueError, format, x, '.6,n')
+
@support.requires_IEEE_754
def test_format_testfile(self):
with open(format_testfile, encoding="utf-8") as testfile: