浮点计算根据编译器而变化

Lau*_*ent 6 c c++ floating-point

当我运行完全相同的代码执行在Windows和Solaris上编译的完全相同的浮点计算(使用双精度)时,我得到的结果略有不同.

我知道由于舍入错误导致结果不准确.但是我希望舍入错误与平台无关,从而在两个平台上给出相同(略微不正确)的结果,但事实并非如此.

这是正常的,还是我的代码中还有其他问题?

Chr*_*ung 7

在x86上,通常大多数计算都是以80位数量进行的,除非另外强制为双精度.我所知道的大多数其他架构都是以双精度进行所有计算(同样,除非另有覆盖).

我不知道你是在SPARC或x86上运行Solaris,但如果是前者,那么我非常怀疑这是造成差异的原因.

  • 别客气!顺便说一下,http://gcc.gnu.org/bugzilla/show_bug.cgi?id = 323对此非常详尽.(这也是'gcc浮点错误'的第一个Google结果,它会告诉你人们遇到这个问题的频率!) (3认同)