Python fractions Module

In this guide, you'll explore Python's fractions module, which is used to work with rational numbers. Learn its features and examples for precise fractional calculations.

The fractions module in Python provides support for rational number arithmetic. The Fraction class in this module allows you to create fractions from integers, floats, decimal numbers, and strings, and perform arithmetic operations with them.

Table of Contents

  1. Introduction
  2. Creating Fractions
  3. Arithmetic Operations
  4. Properties of Fractions
  5. Methods of the Fraction Class
    • limit_denominator
    • from_float
    • from_decimal
  6. Examples
    • Basic Fraction Operations
    • Converting Float to Fraction
    • Limiting the Denominator
  7. Real-World Use Case
  8. Conclusion
  9. References

Introduction

The fractions module provides a Fraction class that supports exact arithmetic with rational numbers. This is useful when precision is critical, such as in financial calculations or mathematical computations.

Creating Fractions

You can create Fraction objects from integers, strings, floats, and Decimal objects.

from fractions import Fraction

# From integers
f1 = Fraction(3, 4)
print(f1)  # 3/4

# From string
f2 = Fraction('3/4')
print(f2)  # 3/4

# From float
f3 = Fraction(0.75)
print(f3)  # 3/4

# From Decimal
from decimal import Decimal
f4 = Fraction(Decimal('0.75'))
print(f4)  # 3/4

Output:

3/4
3/4
3/4
3/4

Arithmetic Operations

Fraction objects support all the usual arithmetic operations.

from fractions import Fraction

f1 = Fraction(1, 3)
f2 = Fraction(2, 3)

print(f1 + f2)  # 1
print(f1 - f2)  # -1/3
print(f1 * f2)  # 2/9
print(f1 / f2)  # 1/2

Output:

1
-1/3
2/9
1/2

Properties of Fractions

Numerator and Denominator

You can access the numerator and denominator of a Fraction object.

from fractions import Fraction

f = Fraction(3, 4)
print(f.numerator)  # 3
print(f.denominator)  # 4

Output:

3
4

Methods of the Fraction Class

limit_denominator

The limit_denominator method finds and returns the closest Fraction to the given fraction that has a denominator at most max_denominator.

from fractions import Fraction

f = Fraction(22, 7)
print(f.limit_denominator(10))  # 3/1

Output:

22/7

from_float

The from_float method creates a Fraction from a floating-point number.

from fractions import Fraction

f = Fraction.from_float(0.75)
print(f)  # 3/4

Output:

3/4

from_decimal

The from_decimal method creates a Fraction from a Decimal object.

from fractions import Fraction
from decimal import Decimal

f = Fraction.from_decimal(Decimal('0.75'))
print(f)  # 3/4

Output:

3/4

Examples

Basic Fraction Operations

Perform basic arithmetic operations with fractions.

from fractions import Fraction

f1 = Fraction(1, 2)
f2 = Fraction(3, 4)

print(f1 + f2)  # 5/4
print(f1 - f2)  # -1/4
print(f1 * f2)  # 3/8
print(f1 / f2)  # 2/3

Output:

5/4
-1/4
3/8
2/3

Converting Float to Fraction

Convert a floating-point number to a fraction.

from fractions import Fraction

f = Fraction.from_float(0.5)
print(f)  # 1/2

Output:

1/2

Limiting the Denominator

Find the closest fraction to a given fraction with a limited denominator.

from fractions import Fraction

f = Fraction(355, 113)
print(f.limit_denominator(10))  # 22/7

Output:

22/7

Real-World Use Case

Financial Calculations

In financial applications, precise arithmetic is crucial. The Fraction class ensures exact results without the rounding errors that can occur with floating-point arithmetic.

from fractions import Fraction

price_per_unit = Fraction(19, 100)  # $0.19 per unit
quantity = 200

total_cost = price_per_unit * quantity
print(total_cost)  # 38/1, which is $38.00

Output:

38

Conclusion

The fractions module in Python provides a robust way to perform exact arithmetic with rational numbers. The Fraction class supports various ways to create fractions and perform arithmetic operations while maintaining precision.

References

Comments

Spring Boot 3 Paid Course Published for Free
on my Java Guides YouTube Channel

Subscribe to my YouTube Channel (165K+ subscribers):
Java Guides Channel

Top 10 My Udemy Courses with Huge Discount:
Udemy Courses - Ramesh Fadatare