К счастью, Python позволяет создавать свои объекты.

Поэтому добрый нидерландский ученый Sjoerd Mullender давным-давно написал библиотеку fractions для работы с обычными дробями (по-английски fractions это и значит: дроби).



from fractions import Fraction

Fraction(1,3) #Сначала пишем числитель, потом знаменатель
Fraction(1, 3)
1/2 - 1/3 #Вычтем парочку дробей обычным способом
0.16666666666666669
Fraction(1,2)-Fraction(1,3) #А теперь с помощью объектов Fraction
Fraction(1, 6)

Вот - это уже другое дело! Точность не потеряна ничуть. Как это удается?