如何在Windows和Linux上确保相同的浮点行为?

时间:2018-03-21 15:43:34

标签: c++ gcc floating-point mingw

我有一个软件可以对双打进行大量计算,它必须在linux和windows上运行。我不关心使用什么行为(越快越好),但我必须在两个平台上获得相同的结果。

我在Windows 10上使用x86_64-w64-mingw32 gcc版本4.9.2进行编译。 和x86_64-linux-gnu gcc 4.9.3在xubuntu上。

我尝试使用以下编译选项:   -frounding,数学   -fno-舍入数学   -ffloat店 在两个系统上似乎都没有用。

我对浮点表示的复杂性了解一点,但对于必须跨平台的软件强制执行相同的行为真的很难吗?

1 个答案:

答案 0 :(得分:0)

要有相同的行为,至少你必须:

1-标准化你的类型,不要从double切换到long double 例如,仅使用唯一类型的long double 2-如果你有任何constante,请使用与你的类型相关的浮点字面值:

如果选择long double,则constante必须具有后缀l或L. 例如:0.5L