是否有一個純粹的python實現fractions.Fraction
支持long
s作爲分子和分母?不幸的是,指數似乎被編碼爲返回一個浮點數(ack !!!),這應該至少支持使用decimal.Decimal
。具有十進制精度的分數
如果沒有,我想我可以製作一個庫的副本,並嘗試用Decimal
替換float()
出現的地方,但我寧願以前被別人測試過的東西。
下面是一個代碼示例:
base = Fraction.from_decimal(Decimal(1).exp())
a = Fraction(69885L, 53L)
x = Fraction(9L, 10L)
print base**(-a*x), type(base**(-a*x))
導致0.0 <type 'float'>
如果答案應該是一個非常小的小數。
更新:我現在有以下解決方法(假設,對於** b,這兩者都是分數;當然,當exp_是浮點數或本身時,我需要另一個函數一個十進制):
def fracpow(base, exp_):
base = Decimal(base.numerator)/Decimal(base.denominator)
exp_ = Decimal(exp_.numerator)/Decimal(exp_.denominator)
return base**exp_
其中給出了答案4.08569925773896097019795484811E-516。如果沒有額外的功能,我還是會有興趣去做這件事(我猜如果我足夠使用Fraction
類,我會發現其他花車在我的結果中工作)。
當我做分數。分數(11,17)** 2我得到分數。分數(121,289)。你得到了什麼? – 2010-01-11 00:12:23
嘗試類型(fractions.Fraction(11,17)** 2.1) – Noah 2010-01-11 00:15:07
IMO,你看到的行爲是正確的,但不是你想要的。由於指數是一個浮點數,所以事物轉換爲浮點數是合理的。現在,如果指數是分數(21,10),那會更有趣...... – 2010-01-11 00:46:30