如何确保在窗口和 Linux 上具有相同的浮点行为
How to ensure same floating-point behavior on windows and linux?
我有一个软件可以对双精度进行大量计算,它必须在Linux和Windows上运行。我不关心使用什么行为(越快越好(,但我必须在两个平台上获得相同的结果。
我正在使用 Windows 6.9.2 上的 x86_64-w64-mingw32 gcc 版本 10 进行编译。以及 xubuntu 上的 x86_64-linux-gnu gcc 4.9.3。
我尝试使用以下编译选项: -四舍五入-数学 -fno-rounding-math -浮装店在这两个系统上,似乎没有任何效果。
我对浮点表示的复杂性有所了解,但是对于必须跨平台的软件强制实施相同的行为真的那么难吗?
要具有相同的行为,至少您必须:
1-标准化您的类型,不要从双倍切换到长双倍仅使用唯一类型长双精度示例2-如果您有任何常量,请使用与您的类型相关的浮点文字:
如果选择长双精度,则常量必须具有后缀 l 或 L例如:0.5L
相关文章:
- 在C++/Linux中设置单调时钟的一些技巧
- Linux的Cpp上的计时器
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 在Linux中哪里可以找到互斥、未来等的源代码
- 如何在linux终端中同时编译和运行c++代码
- 在Linux for Windows上编译C++代码时出错
- 如何确保C++函数在定义之前声明(如override关键字)
- 如何找到锁定Linux futex的C++行
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 在linux上调试巨大的C++项目
- Python中的for循环与C++有何不同
- 如何处理linux终端中带有负号(-)的C++中的命令行参数
- 如何确保在使用基于布尔值的两个方法之一调用方法时避免分支预测错误
- c++方法参数只能在linux的发布模式下自行更改
- 使用Unique_ptr确保工厂中的对象唯一
- 在Linux和C++中的Windows上,散列字符串值会产生不同的输出
- MESI协议和std::atomic-它是否确保所有写入立即对其他线程可见?
- 这里在 Linux 中具有"CreatePipe"和"CreateProcessW"功能吗?
- C++需要帮助从用户那里获得一个整数,并确保它在另外两个整数之间
- 如何确保在窗口和 Linux 上具有相同的浮点行为