0

В Python есть функция для сокращения дробей?

2

Заголовок: Как получить дробный результат деления в виде дроби в Python или Numpy?

Тело вопроса: Я столкнулся с проблемой при выполнении деления чисел в Python. Например, когда я вычисляю 98/42, мне хотелось бы получить результат в виде дроби 7/3, а не в десятичном формате 2.3333333.

Есть ли функция в Python или библиотеке Numpy, которая позволяет мне получить результат в виде дроби? Заранее благодарю за помощь!

2 ответ(ов)

0

Дополнение к ответу Джона:

Чтобы получить упрощённую дробь из десятичного числа (например, 2.0372856077554062)

Использование класса Fraction даёт следующий результат:

Fraction(2.0372856077554062)
#> Fraction(4587559351967261, 2251799813685248)

Чтобы получить упрощённый ответ:

Fraction(2.0372856077554062).limit_denominator()
#> Fraction(2732, 1341)

Такой подход позволит вам получить более удобный вид дроби, которая близка к исходному десятичному числу.

0

Чтобы использовать gcd из модуля math для упрощения дроби, вы можете воспользоваться следующим примером. Функция simplify_fraction принимает числитель и знаменатель, и приводит дробь к простейшему виду:

import math

def simplify_fraction(numerator, denominator):
    # Если НСД равен знаменателю, это означает, что числитель делится на знаменатель
    if math.gcd(numerator, denominator) == denominator:
        return int(numerator / denominator)
    # Если НСД равен 1, дробь уже находится в простейшем виде
    elif math.gcd(numerator, denominator) == 1:
        return str(numerator) + "/" + str(denominator)
    else:
        # Упрощение дроби путем деления числителя и знаменателя на их НСД
        top = numerator / math.gcd(numerator, denominator)
        bottom = denominator / math.gcd(numerator, denominator)
        return str(top) + "/" + str(bottom)

Объяснение работы кода:

  1. Импорт модуля: В начале мы импортируем модуль math, который содержит функцию gcd (наибольший общий делитель).
  2. Проверка на целое число: Есличислитель делится на знаменатель без остатка (то есть НСД равен знаменателю), возвращаем целое число.
  3. Проверка на простую дробь: Если НСД равен 1, дробь уже упрощена, и мы возвращаем её в строковом формате, например, "3/4".
  4. Упрощение дроби: В противном случае мы вычисляем верхнюю и нижнюю части дроби, деля их на НСД, и возвращаем результат в виде строки.

Вы можете вызывать эту функцию с любыми значениями числителя и знаменателя, чтобы получить упрощённый вид дроби.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь