diff options
author | Alessandro Gatti <a.gatti@frob.it> | 2024-09-23 18:07:47 +0200 |
---|---|---|
committer | Damien George <damien@micropython.org> | 2024-09-26 23:39:06 +1000 |
commit | 43b05afdf51d19caadafd27562dafc4a85f0b67d (patch) | |
tree | 8fffb943deaeb3a6ff89c750757e4666218824ab | |
parent | b0ba151102a6c1b2e0e4c419c6482a64677c9b40 (diff) | |
download | micropython-43b05afdf51d19caadafd27562dafc4a85f0b67d.tar.gz micropython-43b05afdf51d19caadafd27562dafc4a85f0b67d.zip |
py/mpz: Skip separators when running out of digits to print.
This commit fixes the addition of a stray separator before the number
when printing an MPZ-backed integer and the first group is three digits
long.
This fixes #8984.
Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
-rw-r--r-- | py/mpz.c | 2 | ||||
-rw-r--r-- | tests/basics/string_format_intbig.py | 15 |
2 files changed, 16 insertions, 1 deletions
@@ -1717,7 +1717,7 @@ size_t mpz_as_str_inpl(const mpz_t *i, unsigned int base, const char *prefix, ch break; } } - if (comma && (s - last_comma) == 3) { + if (!done && comma && (s - last_comma) == 3) { *s++ = comma; last_comma = s; } diff --git a/tests/basics/string_format_intbig.py b/tests/basics/string_format_intbig.py new file mode 100644 index 0000000000..a36c36752e --- /dev/null +++ b/tests/basics/string_format_intbig.py @@ -0,0 +1,15 @@ +# basic functionality test for {} format string using large integers + + +def test(fmt, *args): + print("{:8s}".format(fmt) + ">" + fmt.format(*args) + "<") + + +# Separator formatter + +test("{:,}", 123_456_789_012_345_678_901_234_567) +test("{:,}", 23_456_789_012_345_678_901_234_567) +test("{:,}", 3_456_789_012_345_678_901_234_567) +test("{:,}", -123_456_789_012_345_678_901_234_567) +test("{:,}", -23_456_789_012_345_678_901_234_567) +test("{:,}", -3_456_789_012_345_678_901_234_567) |