首页 > 解决方案 > 浮点数需要显示为分数

问题描述

请您就以下问题提出建议。

首先,我们必须将分子除以分母以获得浮点数。然后小数点后的数字需要显示为分数。

当 9 除以 4 时,它必须显示为 2 1/4。这工作正常。

当 13 除以 5 时,它需要显示为 2 3/5。

我的代码不适用于第二种情况。获取输出为

2 5404319552844595/9007199254740992.

STEP1:用分子除以分母求商 用 ( nmr%dnr) 计算余数。

STEP 2:将上述步骤中得到的余数再除以分母。Fractions使用内置方法将浮点数转换为分数。

第3 步:
将输出存储在元组中并打印输出。 t1=(int(q),r).

代码:

from fractions import Fraction

def printValue(num,den):
    rem=0.0;q=0.0;

    q=float(num)/float(den)
    rem=float(num)%float(den)

    if rem>0:
        #print ("%0.2f"%(rem/den))
        r=Fraction(round(rem/den,2))
        t1=(int(q),r)                    #Output is stored in a tuple
        return t1
    else:
        t2=(int(q),)
        return t2


num=int(input())
den=int(input())
z=printValue(num,den)
for i in z:
    print(i,end=" ")

标签: pythonpython-3.xfractions

解决方案


您可以使用divmod.

def printValue(num, den):
    x, r = divmod(num, den)
    print(f'{x if x else ""} {r}/{den}')

printValue(9, 4)
# prints:
2 1/4

printValue(13, 5)
# prints:
2 3/5

printValue(2, 5)
# prints:
 2/5

推荐阅读