fractions — Rational numbers¶
The fractions module provides support for rational number arithmetic.
A Fraction instance can be constructed from a pair of integers, from another rational number, or from a string.
class fractions. Fraction ( numerator = 0 , denominator = 1 ) ¶ class fractions. Fraction ( other_fraction ) class fractions. Fraction ( float ) class fractions. Fraction ( decimal ) class fractions. Fraction ( string )
The first version requires that numerator and denominator are instances of numbers.Rational and returns a new Fraction instance with value numerator/denominator . If denominator is 0 , it raises a ZeroDivisionError . The second version requires that other_fraction is an instance of numbers.Rational and returns a Fraction instance with the same value. The next two versions accept either a float or a decimal.Decimal instance, and return a Fraction instance with exactly the same value. Note that due to the usual issues with binary floating-point (see Floating Point Arithmetic: Issues and Limitations ), the argument to Fraction(1.1) is not exactly equal to 11/10, and so Fraction(1.1) does not return Fraction(11, 10) as one might expect. (But see the documentation for the limit_denominator() method below.) The last version of the constructor expects a string or unicode instance. The usual form for this instance is:
where the optional sign may be either ‘+’ or ‘-’ and numerator and denominator (if present) are strings of decimal digits (underscores may be used to delimit digits as with integral literals in code). In addition, any string that represents a finite value and is accepted by the float constructor is also accepted by the Fraction constructor. In either form the input string may also have leading and/or trailing whitespace. Here are some examples:
The Fraction class inherits from the abstract base class numbers.Rational , and implements all of the methods and operations from that class. Fraction instances are hashable , and should be treated as immutable. In addition, Fraction has the following properties and methods:
Changed in version 3.2: The Fraction constructor now accepts float and decimal.Decimal instances.
Changed in version 3.9: The math.gcd() function is now used to normalize the numerator and denominator. math.gcd() always return a int type. Previously, the GCD type depended on numerator and denominator.
Changed in version 3.11: Underscores are now permitted when creating a Fraction instance from a string, following PEP 515 rules.
Changed in version 3.11: Fraction implements __int__ now to satisfy typing.SupportsInt instance checks.
Numerator of the Fraction in lowest term.
Denominator of the Fraction in lowest term.
Return a tuple of two integers, whose ratio is equal to the Fraction and with a positive denominator.
New in version 3.8.
Alternative constructor which only accepts instances of float or numbers.Integral . Beware that Fraction.from_float(0.3) is not the same value as Fraction(3, 10) .
From Python 3.2 onwards, you can also construct a Fraction instance directly from a float .
Alternative constructor which only accepts instances of decimal.Decimal or numbers.Integral .
From Python 3.2 onwards, you can also construct a Fraction instance directly from a decimal.Decimal instance.
Finds and returns the closest Fraction to self that has denominator at most max_denominator. This method is useful for finding rational approximations to a given floating-point number:
or for recovering a rational number that’s represented as a float:
Returns the greatest int <= self . This method can also be accessed through the math.floor() function:
Returns the least int >= self . This method can also be accessed through the math.ceil() function.
__round__ ( ) ¶ __round__ ( ndigits )
The first version returns the nearest int to self , rounding half to even. The second version rounds self to the nearest multiple of Fraction(1, 10**ndigits) (logically, if ndigits is negative), again rounding half toward even. This method can also be accessed through the round() function.
Вывести дробную часть положительного числа на Питоне
Дано положительное действительное число X. Выведите его дробную часть.
Вот моё решение, но оно неправильное:
Остаток от деления на единицу, как это ни странно, даст нужный результат:
![]()
Чтобы разделить число на дробную и целые части, можно math.modf() использовать:
print(x — int(x)) — это более точный вариант, но print(a%1) также сработает
![]()
![]()
И округлить по вкусу)))
Из курса ВШЭ решал задание такое вот так:
![]()
Ответом будет 0.1| divmod(n,1) разделит число n на кортеж (4.0, 0.0999999998). Дальше я просто беру число под индексом [1] , это число 0.0999999998, и затем округляю его до десятых. В итоге получается 0.1
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.11.43304
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Математические операции в Python: как вывести дробную часть и работать с числами
Представление чисел в Python 3 не отличается от обычных математических чисел. И поддерживают такие числа самые обыкновенные операции: сложение, вычитание, умножение, деление, возведение в степень, получение дробной части и т. п.
Целые числа (int)
Ниже вы можете увидеть стандартные Python-операции, в которых используется целое число (int):
| a + b | Складываем |
| a — b | Вычитаем |
| a * b | Умножаем |
| a / b | Делим |
| a // b | Можем вывести целую часть от деления |
| a % b | Можем вывести остаток от деления |
| -a | Меняем знак числа |
| abs(x) | Можем вывести модуль числа x |
| divmod(a, b) | Пара (a // b, a % b) |
| a ** b | Операция для возведения в степень |
| pow(a, b[, x]) | ab по модулю (в случае, если модуль задан) |
Кроме того, числа int в Python 3 поддерживают длинную арифметику в отличие от некоторых других языков программирования. Однако для этого требуется больше памяти.
Битовые операции
Над числами int в Python можно выполнять и битовые операции. К примеру, a | b — это побитовое «или». Есть и другие варианты:
Дополнительные методы и операции в Python
В эти операции входят: • int.bit_length() — количество бит, которое необходимо, чтобы представить число в двоичном виде без учёта лидирующих нулей и знака; • int.to_bytes(length, byteorder, *, signed=False) — метод возвращает строку байтов, которые представляют это число; • classmethod int.from_bytes(bytes, byteorder, *, signed=False) — возвращение числа из заданной строки байтов.
Пример работы последнего метода:
Операции с системами счисления
Как гласит математика и информатика, числа можно представить как в десятичной, так и в двоичной системе счисления. Допустим, число 19 в двоичной системе имеет вид 10011. Также можно переводить числа из одной системы в другую. В Python для этого есть ряд функций: • int([object], [основание системы счисления]) — функция нужна для преобразования к целому числу. По умолчанию речь идёт о десятичной системе, однако можно задать любое основание в пределах чисел 2-36. • bin(x) — функция для преобразования целого числа в двоичную строку; • hex(х) — аналогично, но действительное целое число преобразуется в шестнадцатеричную строку; • oct(х) — для преобразования чисел в восьмеричную строку.
Операции с вещественными числами (float)
Чтобы вывести дробную часть, в Python используют вещественные числа. Они поддерживают выполнение тех же операций, что и в случае с int. Но из-за особенностей их представления в компьютере, когда выводишь дробную часть, возможны неточности и даже ошибки:
Для повышения точности операций используются такие объекты, как Decimal и Fraction.
Вспомогательные методы
К ним относят:
• float.as_integer_ratio() — это пара целых чисел int, отношение которых равно этому числу; • float.is_integer() — функция определят, является ли данное значение целым числом; • float.hex() — функция переводит float в 16-тиричную систему счисления, то есть в hex; • classmethod float.fromhex(s) — функцию используют для получения float из 16-тиричной строки.
Кроме стандартных выражений, в Python есть и специальные полезные модули. Например, модуль math позволяет выполнять более сложные арифметические функции:
А вот модуль random запускает генератор случайных чисел, позволяя реализовать функции случайного выбора:
Комплексные числа в Python (complex)
Также в Python встроены комплексные числа:
Кроме того, для работы с complex может применяться модуль cmath.
На этом пока что всё. Следите за новостями и не забывайте оставлять свои комментарии!
Вывести дробную часть положительного числа на Питоне
Дано положительное действительное число X. Выведите его дробную часть.
Вот моё решение, но оно неправильное:
Ответы (6 шт):
Остаток от деления на единцу, как это ни странно, даст нужный результат:
Чтобы разделить число на дробную и целые части, можно math.modf() использовать:
print(x — int(x)) — это более точный вариант, но print(a%1) также сработает
И округлить по вкусу)))
Из курса ВШЭ решал задание такое вот так:
Ответом будет 0.1| divmod(n,1) разделит число n на кортеж (4.0, 0.0999999998). Дальше я просто беру число под индексом [1] , это число 0.0999999998, и затем округляю его до десятых. В итоге получается 0.1