Browse Source

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>
pull/15898/head
Alessandro Gatti 1 month ago
committed by Damien George
parent
commit
43b05afdf5
  1. 2
      py/mpz.c
  2. 15
      tests/basics/string_format_intbig.py

2
py/mpz.c

@ -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;
}

15
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)
Loading…
Cancel
Save