Python int vs double output

时间:2016-09-21 01:58:41

标签: python int double

以下代码返回提醒列表的列表。由于某种原因,有时它会返回所有整数,而在其他情况下,它会返回整数与双精度的混合:

import itertools

def get_factors_list(n):
    list=[]
    curr_n = n
    sqrt = int(n**0.5)+1
    for i in range(2,sqrt):
        if(curr_n%i==0):

            l=[1]
            count=0
            while(curr_n%i==0):
                count+=1
                curr_n=curr_n/i
                l.append(int(i**count))

            list.append(l)


            sqrt = int(curr_n**0.5)+1
            if(curr_n==1):
                return list

    list.append([1,curr_n])
    return list

num1=28
num2=140
l1=get_factors_list(num1)
l2=get_factors_list(num2)
print(l1) #[[1, 2, 4], [1, 7.0]] # note `7.0`
print(l2) #[[1, 2, 4], [1, 5], [1, 7]] # note `7`

导致这种差异的原因是什么?

P.S。我知道一个快速而肮脏的修复(int(al[i][j]),但我问的是原因。

0 个答案:

没有答案