From 7ca9a1a466992e556b3192a7a0ba8baa652e342a Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Wed, 9 Sep 1998 14:07:06 +0000 Subject: [PATCH] Fix a bug where comparison of a rational with a float failed because the difference got converted to float. Put brackets around the string representation of (non-integer) rationals. (Sjoerd Mullender.) --- Demo/classes/Rat.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Demo/classes/Rat.py b/Demo/classes/Rat.py index 5273e3230b9..4fc4a1786f1 100755 --- a/Demo/classes/Rat.py +++ b/Demo/classes/Rat.py @@ -100,7 +100,7 @@ class Rat: if self.__den == 1: return str(self.__num) else: - return '%s/%s' % (str(self.__num), str(self.__den)) + return '(%s/%s)' % (str(self.__num), str(self.__den)) # a + b def __add__(a, b): @@ -213,7 +213,7 @@ class Rat: # cmp(a,b) def __cmp__(a, b): - diff = a - b + diff = Rat(a - b) if diff.__num < 0: return -1 elif diff.__num > 0: @@ -244,16 +244,16 @@ def test(): [Rat(1,2), Rat(-3,10), Rat(1,25), Rat(1,4)] [Rat(-3,10), Rat(1,25), Rat(1,4), Rat(1,2)] 0 - 11/10 - 11/10 + (11/10) + (11/10) 1.1 OK - 2 1.5 3/2 (1.5+1.5j) 15707963/5000000 + 2 1.5 (3/2) (1.5+1.5j) (15707963/5000000) 2 2 2.0 (2+0j) 4 0 4 1 4 0 3.5 0.5 3.0 1.33333333333 2.82842712475 1 - 7/2 1/2 3 4/3 2.82842712475 1 + (7/2) (1/2) 3 (4/3) 2.82842712475 1 (3.5+1.5j) (0.5-1.5j) (3+3j) (0.666666666667-0.666666666667j) (1.43248815986+2.43884761145j) 1 1.5 1 1.5 (1.5+0j) @@ -261,11 +261,11 @@ def test(): 3.0 0.0 2.25 1.0 1.83711730709 0 3.0 0.0 2.25 1.0 1.83711730709 1 (3+1.5j) -1.5j (2.25+2.25j) (0.5-0.5j) (1.50768393746+1.04970907623j) -1 - 3/2 1 1.5 (1.5+0j) + (3/2) 1 1.5 (1.5+0j) - 7/2 -1/2 3 3/4 9/4 -1 + (7/2) (-1/2) 3 (3/4) (9/4) -1 3.0 0.0 2.25 1.0 1.83711730709 -1 - 3 0 9/4 1 1.83711730709 0 + 3 0 (9/4) 1 1.83711730709 0 (3+1.5j) -1.5j (2.25+2.25j) (0.5-0.5j) (1.50768393746+1.04970907623j) -1 (1.5+1.5j) (1.5+1.5j)