我需要使用 python 将假分数转换为带分数,甚至将浮点数转换为带分数。我的代码如下:
from fractions import Fraction
numerator = int(input("Enter numerator ") )
denominator = int(input("Enter denominator ") )
num = numerator / denominator
num = Fraction(num)
print(num)
如果输入是 5 和 4,则输出是“5/4”而不是混合数。
您可以使用除法和模运算符来打印:
整数部分是numerator // denominator
.
真分数余数的分子是numerator % denominator
.
当然,分母不会改变。
>>> num = 5
>>> den = 4
>>> print(' %d %d/%d' % (num // den, num % den, den))
1 1/4
浮点数有点困难,因为你必须计算出分母,而分母通常不会很精确。有两种基本方法(以及一些更高级的变体)可以做到这一点。您可以循环到最大分母并选择误差最小的分母,也可以选择最大可接受误差并循环,直到找到一个能提供低于该分母的结果的分母。执行后者的示例代码如下:
def approximate_frac(src, epsilon):
d = 0.0
while 1:
d += 1.0
n = int(src * d)
info = [(abs(n / d - src), n) for n in (n, n+1)]
info.sort()
err, n = info[0]
if err < epsilon:
return n, int(d)
print(approximate_frac(1.0/3.0, 0.001))
print(approximate_frac(2.0/17.0, 0.001))
这导致:
(1, 3)
(2, 17)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)