我现在在stats类别中,我想知道如果一次生成一个数字与一次生成一个数字是否对数字有区别,所以我写了一些代码...

from random import randint
import math

total1 = 0
total2 = 0
for i in range(100000):
    temp = 0
    for j in range(7):
        temp += randint(0,9)*math.pow(10,j)
    total1 += temp
    total2 += randint(0,9999999)

print "avg1 = ", total1/100000
print "avg2 = ", total2/100000


当我运行代码时,avg1始终是一个小数,而avg2始终是一个整数。我不明白为什么total1被认为是双精度数,因为我只给它加了整数...

最佳答案

根据python文档,math.pow函数返回一个浮点数。这也将隐式地将temp变量转换为float:

https://docs.python.org/2/library/math.html

由于total1隐式转换为浮点数,而total2始终用作int,因此total1将返回小数,而total2将返回整数。

09-04 09:34