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

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条)

报告相同问题?

悬赏问题

  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能