From 70aa1f20951a443dcd6387a23a8835bde596055f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Sun, 22 Aug 2004 21:09:15 +0000 Subject: Fix repr for negative imaginary part. Fixes #1013908. --- Lib/test/test_complex.py | 1 + Objects/complexobject.c | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/Lib/test/test_complex.py b/Lib/test/test_complex.py index 20ae1de..15f4b65 100644 --- a/Lib/test/test_complex.py +++ b/Lib/test/test_complex.py @@ -286,6 +286,7 @@ class ComplexTest(unittest.TestCase): def test_repr(self): self.assertEqual(repr(1+6j), '(1+6j)') + self.assertEqual(repr(1-6j), '(1-6j)') def test_neg(self): self.assertEqual(-(1+6j), -1-6j) diff --git a/Objects/complexobject.c b/Objects/complexobject.c index 4023fa0..45adbcb 100644 --- a/Objects/complexobject.c +++ b/Objects/complexobject.c @@ -279,11 +279,15 @@ complex_to_buf(char *buf, int bufsz, PyComplexObject *v, int precision) strncat(buf, "j", bufsz); } else { char re[64], im[64]; - + char *fmt; PyOS_snprintf(format, 32, "%%.%ig", precision); PyOS_ascii_formatd(re, 64, format, v->cval.real); PyOS_ascii_formatd(im, 64, format, v->cval.imag); - PyOS_snprintf(buf, bufsz, "(%s+%sj)", re, im); + if (v->cval.imag < 0.) + fmt = "(%s%sj)"; + else + fmt = "(%s+%sj)"; + PyOS_snprintf(buf, bufsz, fmt, re, im); } } -- cgit v0.12