代码
a = torch.tensor([ 1.4609, 1.2124, 0.9508, 0.6755, 0.3857, 0.0806, -0.2406, -0.5786,-0.9344, -1.3090, -1.7033])
b = torch.tensor([0.7001])
c = a * b
print(c)
print(c.sum())
结果
tensor([ 1.0228, 0.8488, 0.6657, 0.4729, 0.2700, 0.0564, -0.1684, -0.4051,-0.6542, -0.9164, -1.1925])
tensor(-2.3842e-07)
为啥会是e-07,这怎么家也不到0.0000000几啊,求大神指点。
这是因为python在表示和进行浮点数运算时,不能准确的表示浮点数,所在运算结果会有表示误差,你的结果刚好是0,所以结果会是一个很小的实数,选用不同的浮点长度结果可能都会不一样。如果对计算要求不是太严格,这种便是误差是不用理会的。如果真的需要一个严格的结果,可以采用如下的方式实现严格的浮点计算:
```from decimal import Decimal
a=[ 1.4609, 1.2124, 0.9508, 0.6755, 0.3857, 0.0806, -0.2406, -0.5786,-0.9344, -1.3090, -1.7033]
a=list(map(str,a))
c=Decimal('0')
for i in a:
c+=Decimal(i)
print(c) #这样可以得到一个严格的计算结果
表达式 1.4609+1.2124+0.9508+0.6755+0.3857+0.0806-0.2406-0.5786-0.9344-1.3090-1.7033 = 6.66133814775094e-16
不考虑误差它就是0
https://zh.numberempire.com/expressioncalculator.php