Fraction module in Python

Python's fractions module provides support for rational number arithmetic. Using this module, we can create fractions from integers, floats, decimals, strings, and other numeric values.

The Fraction constructor accepts a numerator and denominator as parameters. The default numerator is 0 and the default denominator is 1. It raises ZeroDivisionError when the denominator is 0.

Creating Fraction Instances

Let's see how to create fractions using numerator and denominator values ?

from fractions import Fraction

print(Fraction(45, 54))
print(Fraction(12, 47))
print(Fraction(0, 15))
print(Fraction(10))  # denominator defaults to 1
5/6
12/47
0
10

Notice how Python automatically reduces fractions to their simplest form (45/54 becomes 5/6).

Creating Fractions from Floats

You can create fractions from floating-point numbers, but the results may vary based on how you provide the input ?

from fractions import Fraction

print(Fraction(0.5))
print(Fraction(0.25))
print(Fraction(33.33))  # exact binary representation
print(Fraction('33.33'))  # string representation
1/2
1/4
2345390243441541/70368744177664
3333/100

Using strings gives cleaner results because it avoids floating-point precision issues.

Creating Fractions from Strings

String arguments offer the most precise way to create fractions. They support signs and whitespace ?

from fractions import Fraction

print(Fraction('5/6'))
print(Fraction('-25.12'))
print(Fraction('  96.251  \t\n  '))  # handles whitespace
print(Fraction('3.14159265359'))
5/6
-628/25
96251/1000
314159265359/100000000000

Limiting the Denominator

Large denominators can be unwieldy. The limit_denominator() method finds the closest rational approximation with a smaller denominator ?

from fractions import Fraction

pi_fraction = Fraction('3.14159265359')
print("Original:", pi_fraction)
print("Limit 1000:", pi_fraction.limit_denominator(1000))
print("Limit 100:", pi_fraction.limit_denominator(100))
print("Limit 10:", pi_fraction.limit_denominator(10))
Original: 314159265359/100000000000
Limit 1000: 355/113
Limit 100: 311/99
Limit 10: 22/7

Accessing Numerator and Denominator

You can access the numerator and denominator components directly ?

from fractions import Fraction

frac = Fraction('36.25')
print("Fraction:", frac)
print("Numerator:", frac.numerator)
print("Denominator:", frac.denominator)
Fraction: 145/4
Numerator: 145
Denominator: 4

Mathematical Operations with Fractions

Fractions support all standard mathematical operations: addition, subtraction, multiplication, division, and exponentiation ?

from fractions import Fraction

f1 = Fraction('5/4')
f2 = Fraction('9/8')

print('Addition:', f1 + f2)
print('Subtraction:', Fraction('15/20') - Fraction('2/8'))
print('Multiplication:', Fraction('2/3') * Fraction('5/7'))
print('Division:', Fraction('80/125') / Fraction('12/45'))
print('Power:', Fraction('5/6') ** 3)
Addition: 19/8
Subtraction: 1/2
Multiplication: 10/21
Division: 12/5
Power: 125/216

Advanced Mathematical Functions

You can use fractions with Python's math module for more advanced operations ?

from fractions import Fraction
import math

frac = Fraction(36, 64)
print('Fraction:', frac)
print('Square root (float):', math.sqrt(frac))
print('Square root (fraction):', Fraction(math.sqrt(frac)).limit_denominator())
print('Floor value:', math.floor(Fraction('22/7')))
print('Ceiling value:', math.ceil(Fraction('22/7')))
Fraction: 9/16
Square root (float): 0.75
Square root (fraction): 3/4
Floor value: 3
Ceiling value: 4

Comparison of Methods

Input Type Example Best For
Integers Fraction(3, 4) Exact rational numbers
Strings Fraction('0.75') Avoiding float precision issues
Floats Fraction(0.75) Simple decimals only

Conclusion

The fractions module provides precise rational arithmetic in Python. Use strings for decimal inputs to avoid floating-point precision issues, and use limit_denominator() to get simpler approximations when needed.

Updated on: 2026-03-25T05:04:50+05:30

7K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements