将浮点数转换为分数

问题描述 投票:0回答:2

我正在用Python3编写。我在代码中创建了两个列表,我想将它们作为分数“循环”连接。除了使用分数库外,还有其他可能的方法吗?很遗憾,我无法使用它,因为这是任务要求。当分数是浮点数(例如1/3)时,就会出现问题。我怎么解决这个问题?

这里是一个例子:

p = [1,2,3]
q = [3,5,9]

frac = []
    for i in p:
      for j in q:
        f = p/q
        if f not in frac:
          frac.append(f)



python python-3.x fractions
2个回答
0
投票

(0.33).as_integer_ratio()可以解决您的问题。显然0.33将被任何浮点数代替。

this question

def float_to_ratio(flt):
    if int(flt) == flt:
        return int(flt), 1
    flt_str = str(flt)
    flt_split = flt_str.split('.')
    numerator = int(''.join(flt_split))
    denominator = 10 ** len(flt_split[1])
    return numerator, denominator

这也是解决方案。


0
投票

您可以使用fractions.Fraction类型。

  1. 使用以下内容导入:从分数导入分数
  2. 用小数表示f方程f = p / q; f =分数(p / q)
  3. 然后也使用字符串转换; f = str(分数(p / q))
© www.soinside.com 2019 - 2024. All rights reserved.