📜  什么是有理数?(1)

📅  最后修改于: 2023-12-03 15:06:26.990000             🧑  作者: Mango

什么是有理数?

有理数是可以表示为两个整数的比值的数,其中被除数和除数都是整数并且除数不为零。具有以下性质:

  • 可以表示为分数形式 $\frac{a}{b}$,其中 $a$ 和 $b$ 是整数,并且 $b \neq 0$。
  • 所有整数都是有理数,因为任何整数 $a$ 都可以表示为 $\frac{a}{1}$。
  • 有理数的加、减、乘、除运算结果仍为有理数,但是除数不能为零。
有理数的表示

有理数可以用有限小数或无限循环小数的形式表示,例如:

  • $\frac{2}{3}$ 可以表示为 $0.66666...$ 或 $0.\overline{6}$。
  • $\frac{1}{7}$ 可以表示为 $0.142857142857...$ 或 $0.\overline{142857}$。
小数转分数

将小数转换为分数,可以将小数的前面部分作为分子,将分子的十进制位数作为分母的10的位数幂,然后再简化分数即可。

例如:

  • 将 $0.75$ 转换为分数:$0.75 = \frac{75}{100} = \frac{3}{4}$。
  • 将 $0.1666...$ 转化为分数:$0.1666... = \frac{1}{6}$。
编程实现

在编程中,可以使用整数类型表示有理数的分子和分母,也可以使用浮点数类型表示有理数的小数形式。对于浮点数类型,需要注意精度损失问题。

示例代码(Python):

class RationalNumber:
    def __init__(self, numerator: int, denominator: int):
        if denominator == 0:
            raise ZeroDivisionError("Denominator cannot be zero!")
        gcd = self._get_gcd(numerator, denominator)
        self.numerator = numerator // gcd
        self.denominator = denominator // gcd
        
    def _get_gcd(self, a: int, b: int) -> int:
        if b == 0:
            return a
        return self._get_gcd(b, a % b)

    def __add__(self, other: 'RationalNumber') -> 'RationalNumber':
        num = self.numerator * other.denominator + other.numerator * self.denominator
        den = self.denominator * other.denominator
        return RationalNumber(num, den)

    def __sub__(self, other: 'RationalNumber') -> 'RationalNumber':
        num = self.numerator * other.denominator - other.numerator * self.denominator
        den = self.denominator * other.denominator
        return RationalNumber(num, den)

    def __mul__(self, other: 'RationalNumber') -> 'RationalNumber':
        num = self.numerator * other.numerator
        den = self.denominator * other.denominator
        return RationalNumber(num, den)

    def __truediv__(self, other: 'RationalNumber') -> 'RationalNumber':
        if other.numerator == 0:
            raise ZeroDivisionError("Division by zero!")
        num = self.numerator * other.denominator
        den = self.denominator * other.numerator
        return RationalNumber(num, den)

    def __str__(self) -> str:
        return f"{self.numerator}/{self.denominator}"

以上代码实现了四则运算和字符串表示,除法运算处理了分母为零的情况。可以使用如下方式进行测试:

a = RationalNumber(2, 3)
b = RationalNumber(1, 6)
print(a + b)  # 5/6
print(a - b)  # 1/2
print(a * b)  # 1/9
print(a / b)  # 4/1
总结

有理数是可以表示为两个整数比值的数,具有加、减、乘、除等基本运算。在编程中可以用整数和浮点数表示,浮点数需要注意精度问题。