2015-09-12 8 views

回答

3

大多數分數庫一旦將它們創建爲性能優化,就會簡化分子和分母。如果您正在處理大量非簡化分數,那麼它們有可能會溢出。因此,在每次操作之前,分數將不得不簡化。

如果你想保持原有的分子和分母不變,你應該創建自己的包裝類,像這樣:使用Fraction(numerator=0, denominator=1)構造你應該調用部分:

class MyFraction: 
    def __init__(self, numerator=1, denominator=1): 
     self.numerator = numerator 
     self.denominator = denominator 

    def get_fraction(self): 
     from fractions import Fraction 
     return Fraction(numerator=self.numerator, denominator=self.denominator) 

    def __repr__(self): 
     return '{}/{}'.format(self.numerator, self.denominator) 

f = MyFraction(numerator=7, denominator=14) 
print(f) # prints 7/14 
print(f.get_fraction()) # prints 1/2 

注意。

是您的情況下所發生的事情是:

Fraction(7/14) => Fraction(0.5) => 1/2

+0

爲什麼沒有一種方法導入模塊?關鍵字參數匹配分數庫中的構造函數 –

+0

嘗試代碼並運行MyFraction(7,14),它的工作原理是:)。另外,python中的導入是[cached](https://docs.python.org/3/reference/import.html) –

+0

因爲它現在支持兩個構造函數,我可以有合理的默認值。我再次複製了Python庫實現... –

相關問題