yaoxunji
yaoxunji
采纳率62.5%
2020-01-08 13:07 阅读 927

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

10

代码

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条回答 默认 最新

  • 已采纳
    qq_39412061 吃鸡王者 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)              #这样可以得到一个严格的计算结果
    
    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2020-01-08 13:11

    表达式 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

    点赞 评论 复制链接分享
  • tuangelin tuangelin 2020-01-10 10:43

    图片说明

    点赞 评论 复制链接分享

相关推荐