>>> from fractions import Fraction
>>> Fraction(2.6)
**Fraction(5854679515581645, 2251799813685248)**
>>> Fraction(2.6).limit_denominator(10)
Fraction(13,2)
>>> Fraction('2.6') #Fraction(str(2.6)) or Fraction(repr(2.6))
**Fraction(13,2)**
Fraksiyon, neden float örnekleri için en yakın kesiri döndürmez? the documentation itibarenNiçin kesir modülünde sayısal dizi (float) ve float örneği için sonuçta bir fark var?
Sınır payda yöntemi her zaman sorunu çözmez ve aynı zamanda hatalı sonuç verebilir. Örneğin. 'Fraksiyon (2.36)' büyük tamsayıları döndürür, 'Kesir (2.36) .limit_denominator (10)', 'Fraksiyon (19,8)' olan 2.375 değerini döndürür. En yakın kesir 59/25. Paydanın maksimum sınırını nasıl bilmesi gerekiyor? ya da daha doğrusu bir limit için iyi bir aralık/tahmin nedir? – lapin
Bu doğru. "Paydanın maksimum sınırını nasıl bilmem gerekiyor?" Benim önerim, argümanlarınızı dizelere dönüştürerek yapabileceğiniz problemlerden kaçınmaktır (örneğin, 'Fraksiyon (str (2.36))'). Ama bu her zaman işe yaramaz; Bazı değerler basitçe _cannot_ kesirler tarafından kesin olarak temsil edilir. Eğer paydamızın limitini yuvarlatılmış argümandaki rakamların sırasına göre ayarladıysanız, 10. adımda çalıştığınızı farz edersiniz. Tamamen 2.36'dan itibaren üç basamaklı olduğu için '10 ** 3' kullanın. payda sınırınız olarak. – Chris
10 ** 2 değil mi? 236/1? – lapin