两个有理数运算符重载
时间: 2024-03-18 12:35:36 浏览: 26
以下是两个有理数运算符重载的例子:
```python
class Rational:
def __init__(self, numerator, denominator):
if denominator == 0:
raise ZeroDivisionError("分母不能为0")
self.numerator = numerator
self.denominator = denominator
self._simplify()
def _simplify(self):
gcd_num = self._gcd(self.numerator, self.denominator)
self.numerator //= gcd_num
self.denominator //= gcd_num
def _gcd(self, a, b):
if b == 0:
return a
return self._gcd(b, a % b)
def __add__(self, other):
new_numerator = self.numerator * other.denominator + self.denominator * other.numerator
new_denominator = self.denominator * other.denominator
return Rational(new_numerator, new_denominator)
def __sub__(self, other):
new_numerator = self.numerator * other.denominator - self.denominator * other.numerator
new_denominator = self.denominator * other.denominator
return Rational(new_numerator, new_denominator)
def __mul__(self, other):
new_numerator = self.numerator * other.numerator
new_denominator = self.denominator * other.denominator
return Rational(new_numerator, new_denominator)
def __truediv__(self, other):
new_numerator = self.numerator * other.denominator
new_denominator = self.denominator * other.numerator
return Rational(new_numerator, new_denominator)
def __eq__(self, other):
return self.numerator == other.numerator and self.denominator == other.denominator
def __str__(self):
return str(self.numerator) + '/' + str(self.denominator)
```
上述代码中,我们定义了一个有理数类Rational,其中包含了分子和分母两个整数成员变量,以及初始化函数、化简函数、加减乘除和相等判断等运算符重载函数。在加减乘除函数中,我们分别计算了新的分子和分母,并返回一个新的有理数对象。在相等判断函数中,我们判断了两个有理数的分子和分母是否相等。最后,我们还定义了一个__str__函数,用于将有理数对象转换为字符串输出。