📜  python float to fraction - Python (1)

📅  最后修改于: 2023-12-03 15:18:55.329000             🧑  作者: Mango

Python Float to Fraction

在Python中,很多时候我们需要把一个小数转换成分数的形式,这个时候需要用到分数库——fractions。下面我们将介绍如何使用Python将小数转换为分数。

方法一:自定义函数实现

首先我们可以自定义一个函数将小数转化为分数的形式:

from fractions import Fraction

def float_to_frac(f):
    a = Fraction(f).limit_denominator()
    return f'{a.numerator}/{a.denominator}'

# 测试
print(float_to_frac(0.5))  #=> 1/2
print(float_to_frac(0.3333))  #=> 3333/10000
print(float_to_frac(0.9))  #=> 9/10

这种方法使用fractions库,将小数转化为一个分数,再用字符串的形式输出。

方法二:使用sympy库

另一种方法是使用sympy库,这个库是用于符号运算的,可以将小数转化为分数的形式。

from sympy import *

def float_to_frac_sympy(f):
    x = symbols('x')
    frac = float(f)
    return str(ratsimp(frac).as_integer_ratio()[0]) + '/' + str(ratsimp(frac).as_integer_ratio()[1])

# 测试
print(float_to_frac_sympy(0.5))   #=> 1/2
print(float_to_frac_sympy(0.3333))   #=> 3333/10000
print(float_to_frac_sympy(0.9))   #=> 9/10

这种方法使用了sympy库的有理化函数ratsimp(),将小数分子分母化简为整数。

结论

无论是上面的哪种方法都可以在Python中将小数转化为分数。如果需要精度更高的转换,可以使用sympy库实现,如果只是简单的转换可以使用fractions库。