yaoxunji 2020-01-08 13:07 采纳率: 62.5%
浏览 1052
已采纳

pytorch sum()结果为什么不正确

代码

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几啊,求大神指点。

  • 写回答

3条回答 默认 最新

  • 吃鸡王者 2020-01-09 10:39
    关注

    这是因为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)              #这样可以得到一个严格的计算结果
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?