diff --git a/py/float.go b/py/float.go index 94fddde3..1f9e1f99 100644 --- a/py/float.go +++ b/py/float.go @@ -48,6 +48,9 @@ func FloatNew(metatype *Type, args Tuple, kwargs StringDict) (Object, error) { } func (a Float) M__str__() (Object, error) { + if i := int64(a); Float(i) == a { + return String(fmt.Sprintf("%d.0", i)), nil + } return String(fmt.Sprintf("%g", a)), nil } diff --git a/py/tests/float.py b/py/tests/float.py index 8b8a84af..7f4cc7e7 100644 --- a/py/tests/float.py +++ b/py/tests/float.py @@ -14,4 +14,24 @@ assert float(" -1E400") == float("-inf") assertRaises(ValueError, float, "1 E200") +doc="repr" +assert repr(float("1.0")) == "1.0" +assert repr(float("1.")) == "1.0" +assert repr(float("1.1")) == "1.1" +assert repr(float("1.11")) == "1.11" +assert repr(float("-1.0")) == "-1.0" +assert repr(float("1.00101")) == "1.00101" +assert repr(float("1.00")) == "1.0" +assert repr(float("2.010")) == "2.01" + +doc="str" +assert str(float("1.0")) == "1.0" +assert str(float("1.")) == "1.0" +assert str(float("1.1")) == "1.1" +assert str(float("1.11")) == "1.11" +assert str(float("-1.0")) == "-1.0" +assert str(float("1.00101")) == "1.00101" +assert str(float("1.00")) == "1.0" +assert str(float("2.010")) == "2.01" + doc="finished" diff --git a/py/tests/list.py b/py/tests/list.py index 3e8468b0..0f6691f0 100644 --- a/py/tests/list.py +++ b/py/tests/list.py @@ -9,12 +9,14 @@ assert str([1,2,3]) == "[1, 2, 3]" assert str([1,[2,3],4]) == "[1, [2, 3], 4]" assert str(["1",[2.5,17,[]]]) == "['1', [2.5, 17, []]]" +assert str([1, 1.0]) == "[1, 1.0]" doc="repr" assert repr([]) == "[]" assert repr([1,2,3]) == "[1, 2, 3]" assert repr([1,[2,3],4]) == "[1, [2, 3], 4]" assert repr(["1",[2.5,17,[]]]) == "['1', [2.5, 17, []]]" +assert repr([1, 1.0]) == "[1, 1.0]" doc="enumerate" a = [e for e in enumerate([3,4,5,6,7], 4)] diff --git a/py/tests/tuple.py b/py/tests/tuple.py index 609a687c..e5df3c81 100644 --- a/py/tests/tuple.py +++ b/py/tests/tuple.py @@ -7,12 +7,14 @@ assert str((1,2,3)) == "(1, 2, 3)" assert str((1,(2,3),4)) == "(1, (2, 3), 4)" assert str(("1",(2.5,17,()))) == "('1', (2.5, 17, ()))" +assert str((1, 1.0)) == "(1, 1.0)" doc="repr" assert repr(()) == "()" assert repr((1,2,3)) == "(1, 2, 3)" assert repr((1,(2,3),4)) == "(1, (2, 3), 4)" assert repr(("1",(2.5,17,()))) == "('1', (2.5, 17, ()))" +assert repr((1, 1.0)) == "(1, 1.0)" doc="mul" a = (1, 2, 3)