我有一个程序在图中查找路径并输出累积权重。图中的所有边都具有 0 到 100 的单独权重,以浮点数形式显示,最多保留 2 个小数位。
在 Windows/Visual Studio 2010 上,对于由权重为 0 的边组成的特定路径,它输出正确的总权重 0。但是在 Linux/GCC 上,程序说路径的权重为2.35503e-38
. 我有很多关于由浮点数引起的疯狂错误的经验,但是 0 + 0 什么时候会等于 0 以外的任何值?
我能想到的唯一原因是程序确实将一些权重视为整数并使用隐式强制将它们添加到总数中。但是 0 + 0.0f 仍然等于 0.0f!作为快速修复,当小于 0.00001 时,我将总数减少到 0,这足以满足我的需求,目前。但是是什么伏都教导致了这种情况?
注意:我 100% 确信图中的权重都没有超出我提到的范围,并且此特定路径中的所有权重都为 0。
编辑:详细说明,我尝试从文件中读取权重并在代码中手动将它们设置为等于 0.0f 除了将它们添加到总数之外,没有对它们执行其他操作。