python - 当我迭代列表并添加它们时,它给了我一个奇怪的总和

标签 python python-3.x list floating-point operation

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)

#it 给了我这个奇怪的答案:1.262177448353619e-29

最佳答案

我假设你期待 0?如果是这样,这只是floating-point precision error的另一种情况。 ,因为 float 由计算机以 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 以及对其值求和时。

关于python - 当我迭代列表并添加它们时,它给了我一个奇怪的总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71984020/

相关文章:

python - GNU/Linux-Python3-PySerial : How to send data over USB connection?

python3弄乱了终端

python - 为 Flask 创建身份验证装饰器的问题

python - 替换 Python 列表中的选定元素

python - 在python中读取具有混合数据类型的未知大小的二进制文件

python - 如何在数据框中添加一列来说明每行来自哪个工作表名称? Python

python - 估计器 : What to use for placeholder in an accuracy prediction?

python - 对于 Pandas 时间序列中的固定格式错误,列索引必须是唯一的

java - 尝试从共享首选项中检索数据时我遗漏了什么

python - 如何检查 Python 列表中是否存在元组?