当我遍历列表并添加它们时,它给了我一个奇怪的总和
When I iterate through a list and added them, It gave me a weird sum
a= [8, 12, 11, 15, 12, 2, 16, 3, 6, 19]
mean_a = sum(a)/len(a)
b = list(map(lambda x: x-mean_a, a))
tot = 0
for i in b:
tot+=i
print(tot**2)
#它给了我这个奇怪的答案:1.262177448353619e-29
我假设你期望 0?如果是这样,这只是 floating-point precision error 的另一种情况,因为计算机以 2 为基数处理浮点数。答案实际上是 0;你可以四舍五入到一定的小数位来得到这个答案。
sum(a) = 104
len(a) = 10
mean_a = 10.4
b = [-2.4000000000000004, 1.5999999999999996, 0.5999999999999996, 4.6, 1.5999999999999996, -8.4, 5.6, -7.4, -4.4, 8.6]
sum(b) = -3.552713678800501e-15
sum(b)**2 = 1.262177448353619e-29
出现两次浮点错误;当您创建 b
时,以及当您对其值求和时。
a= [8, 12, 11, 15, 12, 2, 16, 3, 6, 19]
mean_a = sum(a)/len(a)
b = list(map(lambda x: x-mean_a, a))
tot = 0
for i in b:
tot+=i
print(tot**2)
#它给了我这个奇怪的答案:1.262177448353619e-29
我假设你期望 0?如果是这样,这只是 floating-point precision error 的另一种情况,因为计算机以 2 为基数处理浮点数。答案实际上是 0;你可以四舍五入到一定的小数位来得到这个答案。
sum(a) = 104
len(a) = 10
mean_a = 10.4
b = [-2.4000000000000004, 1.5999999999999996, 0.5999999999999996, 4.6, 1.5999999999999996, -8.4, 5.6, -7.4, -4.4, 8.6]
sum(b) = -3.552713678800501e-15
sum(b)**2 = 1.262177448353619e-29
出现两次浮点错误;当您创建 b
时,以及当您对其值求和时。