as_integer_ratio() în Python

Numere și matematică Python 3.0+ (int: 3.8+)

Returnează numărul ca fracție exactă: perechea (numărător, numitor).

Sintaxă
x.as_integer_ratio()

Ce face as_integer_ratio()

as_integer_ratio() returnează tuplul (a, b) cu a / b egal exact cu numărul, iar b pozitiv și cât mai mic. Pentru un float, arată valoarea reală stocată în memorie, ceea ce explică surprizele de precizie: 0.1 nu este exact o zecime.

Pentru calcule cu fracții folosește modulul fractions: Fraction(0.1) dă aceeași valoare exactă, iar Fraction("0.1") dă exact 1/10.

Ce returnează

Un tuplu de doi întregi.

Exemple

Exemplul 1: Valoarea exactă a unor numere

print((0.5).as_integer_ratio())
print((0.75).as_integer_ratio())
print((0.1).as_integer_ratio())
print((7).as_integer_ratio())

from fractions import Fraction
print(Fraction("0.1"), Fraction(0.1) == Fraction(*(0.1).as_integer_ratio()))

Rezultat

(1, 2)
(3, 4)
(3602879701896397, 36028797018963968)
(7, 1)
1/10 True

Greșeli frecvente

  • Te aștepți ca (0.1).as_integer_ratio() să fie (1, 10). Valoarea stocată este cea mai apropiată fracție binară; pentru 1/10 exact, pornește de la text: Fraction("0.1").

Comenzi înrudite

  • float(): Tipul numerelor cu zecimale; float() transformă un text sau un întreg în număr zecimal.
  • float.hex() și float.fromhex(): Scrie un număr zecimal în format hexazecimal exact și îl citește înapoi.
  • math.isclose(): Verifică dacă două numere zecimale sunt „suficient de apropiate” pentru a fi considerate egale.