📅  最后修改于: 2023-12-03 15:18:55.329000             🧑  作者: Mango
在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
库,这个库是用于符号运算的,可以将小数转化为分数的形式。
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
库。