gpt4 book ai didi

c++ - 0 + 0 + 0... + 0 != 0

转载 作者:可可西里 更新时间:2023-11-01 15:03:29 27 4
gpt4 key购买 nike

我有一个程序可以在图中查找路径并输出累积权重。图中所有边的权重都在 0 到 100 之间,采用 float 形式,最多保留 2 位小数。

在 Windows/Visual Studio 2010 上,对于由权重为 0 的边组成的特定路径,它输出正确的总权重 0。但是在 Linux/GCC 上,程序说路径的权重为 2.35503e -38。我对由 float 引起的疯狂错误有很多经验,但 0 + 0 何时会等于 0 以外的任何值?

我唯一能想到的原因是程序确实将一些权重视为整数并使用隐式强制将它们添加到总数中。但是 0 + 0.0f 仍然等于 0.0f!作为快速修复,当总数小于 0.00001 时,我将总数减少到 0,目前这足以满足我的需求。但究竟是什么伏都教造成了这种情况?

注意:我有 100% 的把握图表中的权重都不会超过我提到的范围,并且这条特定路径中的所有权重都为 0。

编辑:详细说明,我已经尝试从文件中读取权重并在代码中手动将它们设置为等于 0.0f 除了将它们添加到总数。

最佳答案

因为它是一个 IEEE float ,并不完全等于零。

http://www.cygnus-software.com/papers/comparingfloats/comparingfloats.htm

关于c++ - 0 + 0 + 0... + 0 != 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10303762/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com