少数を分数に変換するための関数。
def Euclidean(m,n):
if m < n:
m,n = n,m
if n == 0:
return m
elif m % n == 0:
return n
else:return Euclidean(n,m%n)
def deciToFrac(deci):
i = 0
while deci % 1 != 0:
deci = deci * 10
i += 1
numer,denomi = int(deci),int(10 ** i)
gcd = Euclidean(numer,denomi)
return numer / gcd,denomi / gcd
下の関数に少数を渡すと通分された分数に変換し、分子と分母を返す。
上の関数はユークリッドの互除法。
これを使って分子、分母を通分している。
使用結果はこんな感じ。
>>> deciToFrac(2.6)
(13, 5)
>>> deciToFrac(1.2)
(6, 5)
0 件のコメント:
コメントを投稿