gpt4 book ai didi

c++ - 在两台计算机上使用 float 的相同代码会给出两个不同的结果

转载 作者:太空狗 更新时间:2023-10-29 23:21:32 24 4
gpt4 key购买 nike

我有一些用 C++ 编写的图像处理代码,可以计算梯度并使用霍夫变换算法在其中找到直线。该程序使用 float 进行大部分计算。

当我在两台不同的计算机(一台运行最新的 Fedora 的 Pentium IV,另一台运行最新的 Ubuntu 的 Core i5,均为 32 位)上的同一图像上运行此代码时,我得到的结果略有不同。例如。经过长时间的计算,一台机器上的某个变量为 1.3456f,另一台机器上为 1.3457f。这是预期的行为还是我应该在我的程序中搜索错误?

我的第一个猜测是,我正在访问一些未初始化或越界的内存,但我确实通过 valgrind 运行了程序,但它找不到任何错误,而且在同一台机器上多次运行总是给出相同的结果。

最佳答案

这并不罕见,它取决于您的编译器、优化设置、数学库、CPU,当然还有您使用的算法的数值稳定性。

您需要清楚地了解您的准确性要求,如果您不满足这些要求,那么您可能需要查看您的算法,例如考虑在需要时使用 double 而不是 float。

关于c++ - 在两台计算机上使用 float 的相同代码会给出两个不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3829990/

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