Calcolo di frazioni (numeri razionali) con frazioni

Attività commerciale

Usando il modulo frazioni della libreria standard di Python, puoi eseguire calcoli con le frazioni (numeri razionali).

Qui si spiega quanto segue.

  • Costruttore di Fraction
  • Ottenere i valori di numeratore e denominatore come interi
  • Calcolo e confronto di frazioni (numeri razionali)
  • Conversione di frazioni in decimali (float)
  • Conversione da frazione a stringa (str)
  • Ottenere l'approssimazione dei numeri razionali

Costruttore di Fraction

Ci sono diversi modi per creare un'istanza di frazione. In tutti i casi, la frazione è automaticamente divisa in frazioni.

Specificare numeratore e denominatore come numeri interi

Specificare il numeratore e il denominatore come interi, rispettivamente. Se il denominatore viene omesso, si assume che sia 1.

from fractions import Fraction

print(Fraction(1, 3))
# 1/3

print(Fraction(2, 6))
# 1/3

print(Fraction(3))
# 3

frazione decimale (float)

Se viene passato un valore frazionario, viene convertito in una frazione.

print(Fraction(0.25))
# 1/4

print(Fraction(0.33))
# 5944751508129055/18014398509481984

Se volete approssimare specificando un denominatore massimo, usate il metodo limit_denominator() descritto qui sotto.

stringa di caratteri (str)

Se viene passato un valore stringa, viene convertito in una frazione.

print(Fraction('2/5'))
# 2/5

print(Fraction('16/48'))
# 1/3

Ottenere i valori di numeratore e denominatore come interi

Gli attributi di tipo Fraction permettono di ottenere valori interi per il numeratore e il denominatore, rispettivamente. Non possono essere modificati.

  • numerator
  • denominator
a = Fraction(1, 3)
print(a)
# 1/3

print(a.numerator)
print(type(a.numerator))
# 1
# <class 'int'>

print(a.denominator)
print(type(a.denominator))
# 3
# <class 'int'>

# a.numerator = 7
# AttributeError: can't set attribute

Calcolo e confronto di frazioni (numeri razionali)

Gli operatori aritmetici possono essere usati per calcolare addizioni, sottrazioni, ecc.

result = Fraction(1, 6) ** 2 + Fraction(1, 3) / Fraction(1, 2)
print(result)
print(type(result))
# 25/36
# <class 'fractions.Fraction'>

Si possono usare anche operatori di confronto.

print(Fraction(7, 13) > Fraction(8, 15))
# True

Conversione di frazioni in decimali (float)

Può convertire da frazioni a decimali con float().

a_f = float(a)
print(a_f)
print(type(a_f))
# 0.3333333333333333
# <class 'float'>

Quando viene calcolato con un numero decimale, viene automaticamente convertito in un tipo float.

b = a + 0.1
print(b)
print(type(b))
# 0.43333333333333335
# <class 'float'>

Conversione da frazione a stringa (str)

Per convertire in una stringa, usate str().

a_s = str(a)
print(a_s)
print(type(a_s))
# 1/3
# <class 'str'>

Ottenere l'approssimazione dei numeri razionali

Un'approssimazione con numeri razionali può essere ottenuta con il metodo limit_denominator() di tipo Fraction.

Restituisce il numero razionale (frazione) il cui denominatore è minore o uguale all'argomento max_denominatore. Se omesso, max_denominatore=1000000.

Approssimare i numeri irrazionali come il pi greco e il numero di Napier e

pi = Fraction(3.14159265359)
print(pi)
# 3537118876014453/1125899906842624

print(pi.limit_denominator(10))
print(pi.limit_denominator(100))
print(pi.limit_denominator(1000))
# 22/7
# 311/99
# 355/113

e = Fraction(2.71828182846)
print(e)
# 6121026514870223/2251799813685248

print(e.limit_denominator(10))
print(e.limit_denominator(100))
print(e.limit_denominator(1000))
# 19/7
# 193/71
# 1457/536

Convertire decimali circolari in frazioni

a = Fraction(0.565656565656)
print(a)
# 636872674577009/1125899906842624

print(a.limit_denominator())
# 56/99

a = Fraction(0.3333)
print(a)
# 6004199023210345/18014398509481984

print(a.limit_denominator())
print(a.limit_denominator(100))
# 3333/10000
# 1/3
Copied title and URL