Глава 4 · Python любит числа
Fraction — точные обычные дроби
Когда нужна не десятичная, а самая обычная точная дробь — числитель через знаменатель, без приближения.
Ещё один точный числовой инструмент из стандартной библиотеки —
Fraction, обычная рациональная дробь «числитель / знаменатель»,
без какого-либо приближения.
fraction_demo.py
from fractions import Fraction
third = Fraction(1, 3)
print(third) # 1/3
Арифметика с Fraction — точная
fraction_math.py
from fractions import Fraction
result = Fraction(1, 3) + Fraction(1, 6)
print(result) # 1/2 — точно, не приближённо
Fraction из текста и из float — тоже разница
fraction_stroka.py
from fractions import Fraction
print(Fraction("0.1")) # 1/10 — прочитано из десятичного текста точно
print(Fraction(0.1)) # 3602879701896397/36028797018963968 — унаследовал приближение float!
Та же самая логика, что и с Decimal в разделе 4.14: если
сначала создать float, приближение уже произошло раньше, чем
Fraction успел его получить.
float, Decimal и Fraction рядом
| Инструмент | Представляет | Точен для | Типичное применение |
|---|---|---|---|
float | Двоичное приближение | Степеней двойки и их сумм | Наука, измерения, общие расчёты |
Decimal | Десятичную дробь | Десятичных значений | Деньги, бухгалтерия |
Fraction | Рациональное число p/q | Любой обычной дроби | Точная рациональная арифметика |
float vs Decimal vs Fraction
Нужен обычный расчёт или измерение?
→
float
Нужна десятичная точность (деньги)?
→
Decimal
Нужна точная дробь p/q?
→
Fraction
Практика: Fraction и точные дроби
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки