您的位置:首页 > 其它

小数到分数的转换

2017-08-10 22:20 169 查看
这里提供一个思路,是将小数乘以一个特别大的数 得到up作为分子,其中特别大的数我用的是down = pow(10,8) 

再用up与down除以他们的最大公约数得到各自的分子形式

def float2Fraction(f):

    down = pow(10,8)    #特别大的数,作为分母

    up = f * down            #分子

    gcd_ = gcd(up,down)  #最大公约数

    return '%d/%d'%(int(up / gcd_ ) , int(down / gcd_))

def gcd(x, y):

    """该函数返回两个数的最大公约数 
http://www.runoob.com/python3/python3-hcf.html    抄过来的

    """

    # 获取最小值

    print x ,y

    if x > y:

        smaller = y

    else:

        smaller = x

    for i in xrange(1,np.int64(smaller + 1)):    #由于数据太大,这里我将源代码改为迭代方式

        if((x % i == 0) and (y % i == 0)):

            hcf = i

    return hcf

但是这个有一个问题,就是效率太低。不知有谁能告诉我一个比较好的方法?

float2Fraction(0.3)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: