Pythonin standardikirjaston murtolukumoduulin avulla voit suorittaa laskutoimituksia murtoluvuilla (rationaaliluvuilla).
Tässä selitetään seuraavat asiat.
- Murtoluvun konstruktori
- Hae osoittajan ja nimittäjän arvot kokonaislukuina.
- Murtolukujen (rationaalilukujen) laskeminen ja vertailu
- Murtolukujen muuntaminen desimaaliluvuiksi (float)
- Murtoluvun muuntaminen merkkijonoksi (str)
- Hae rationaalilukujen approksimaatio
Murtoluvun konstruktori
On olemassa useita tapoja luoda murtolukukappale. Kaikissa tapauksissa murtoluku jaetaan automaattisesti murtolukuihin.
Määritä osoittaja ja nimittäjä kokonaislukuina.
Määritä osoittaja ja nimittäjä kokonaislukuina. Jos nimittäjä jätetään pois, sen oletetaan olevan 1.
from fractions import Fraction print(Fraction(1, 3)) # 1/3 print(Fraction(2, 6)) # 1/3 print(Fraction(3)) # 3
desimaalimurto (float)
Jos syötetään murtolukuarvo, se muunnetaan murtoluvuksi.
print(Fraction(0.25)) # 1/4 print(Fraction(0.33)) # 5944751508129055/18014398509481984
Jos haluat approksimoida antamalla suurimman nimittäjän, käytä jäljempänä kuvattua limit_denominator()-menetelmää.
merkkijono (str)
Jos annetaan merkkijonoarvo, se muunnetaan murtoluvuksi.
print(Fraction('2/5')) # 2/5 print(Fraction('16/48')) # 1/3
Hae osoittajan ja nimittäjän arvot kokonaislukuina.
Fraction-tyyppisten attribuuttien avulla voit saada kokonaislukuarvot osoittajalle ja nimittäjälle. Niitä ei voi muuttaa.
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
Murtolukujen (rationaalilukujen) laskeminen ja vertailu
Aritmeettisia operaattoreita voidaan käyttää yhteenlaskun, vähennyslaskun jne. laskemiseen.
result = Fraction(1, 6) ** 2 + Fraction(1, 3) / Fraction(1, 2) print(result) print(type(result)) # 25/36 # <class 'fractions.Fraction'>
Myös vertailuoperaattoreita voidaan käyttää.
print(Fraction(7, 13) > Fraction(8, 15)) # True
Murtolukujen muuntaminen desimaaliluvuiksi (float)
Voi muuntaa murtoluvut desimaaliluvuiksi float():lla.
a_f = float(a) print(a_f) print(type(a_f)) # 0.3333333333333333 # <class 'float'>
Kun laskennassa käytetään desimaalilukua, se muunnetaan automaattisesti float-tyyppiseksi.
b = a + 0.1 print(b) print(type(b)) # 0.43333333333333335 # <class 'float'>
Murtoluvun muuntaminen merkkijonoksi (str)
Jos haluat muuntaa merkkijonoksi, käytä str() -toimintoa.
a_s = str(a) print(a_s) print(type(a_s)) # 1/3 # <class 'str'>
Hae rationaalilukujen approksimaatio
Rationaalilukujen approksimaatio voidaan saada käyttämällä menetelmää limit_denominator(), jonka tyyppi on Fraction.
Palauttaa rationaaliluvun (murtoluvun), jonka nimittäjä on pienempi tai yhtä suuri kuin argumentin max_denominator. Jos se jätetään pois, max_denominator=1000000.
Irrationaalisten lukujen, kuten piin ja Napierin luvun, approksimointi 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
Ympyrän desimaalilukujen muuntaminen murtoluvuiksi
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