>>> 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)**
なぜFractionはfloatインスタンスの最も近い部分を返しますか?fractionsモジュールの数値文字列(float)とfloatインスタンスの結果に違いがあるのはなぜですか?
限界分母法は必ずしも問題を解決するとは限らず、不正確な結果をもたらすこともあります。例えば。 'Fraction(2.36)'は大きな整数を返し、 'Fraction(2.36).limit_denominator(10)'は 'Fraction(19,8)'を返します。最も近い部分は59/25です。どのように分母の最大限度を知ることになっていますか?あるいは、限界の良い範囲/見積もりは何ですか? – lapin
それは正しいです。 "分母の最大限度はどのように知っていますか?"私のアドバイスは、引数を文字列に変換することで問題を回避することです(例えば 'Fraction(str(2.36))')。しかし、これは必ずしも機能しません。いくつかの値は単に分数で正確に表現することはできません。あなたの分母の制限を、引数の桁数のオーダーに設定すると、基数10で作業していると仮定すると大丈夫です。 '2.36'には3桁の数字が含まれているので、' 10 ** 3'あなたの分母の限界として。 – Chris
10 ** 2になりませんか? 236/1? – lapin