Python数学意义水平

时间:2013-01-27 07:25:36

标签: python math significant-digits

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

x1=5.904e-16

x1=1.048576e-14

授予这些是微小的数字,但我想做的就是平均它们。

avg = 1/2*(x1+x2)

但是这给出了avg = 0

编曲!

2 个答案:

答案 0 :(得分:4)

我假设您使用的是Python 2。

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

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

要克服这一点,要么使用float等效(0.5),要么将其中一个参数更改为除法(12,无关紧要)到a浮动,这样它也会返回一个浮点数。

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

你也可以像nneonneo mentioned一样,将这笔钱直接存入分区,如下:

(x1+x2)/2.0

这也会得到理想的结果。

答案 1 :(得分:-2)

avg = 0.5*(x1+x2)

工作因为显然在python中的1/2不等于0.5但是没有它看到1/2作为一个超过两个而没有超过小数的值,所以它假设你不关心想要那样。