2

我从一个数据集中加载了 2 个值。

x1=5.904e-16

x1=1.048576e-14

当然这些都是很小的数字,但我想做的就是平均它们。

avg = 1/2*(x1+x2)

但这给出了 avg = 0

啊!

4

2 回答 2

4

我假设您使用的是 Python 2。

当两个参数都是整数时,Python 2 使用整数除法,这意味着结果也将是整数。例如:

print 1/2
# 0
print 5/2
# 2

为了克服这个问题,要么使用等效的浮点数0.512

print 1.0/2
# 0.5
print 1/2.0
# 0.5
print 1.0/2.0
# 0.5

正如nneonneo 提到的,您还可以将总和直接放入除法中,如下所示:

(x1+x2)/2.0

这也将给出预期的结果。

于 2013-01-27T07:27:34.457 回答
-2
avg = 0.5*(x1+x2)

之所以有效,是因为在 python 中 1/2 显然不等于 0.5,但不,它认为 1/2 是二分之一,并且任何一个都没有超过小数点的值,所以它假设你不关心想要那个。

于 2013-01-27T07:26:59.520 回答