我正试图在两个不同的平台上获得完全相同的结果,即Solaris和Linux(sun-studio vs GCC)。整个代码使用双精度数据类型。但当我打印输出时,我看到浮点数中的差异(如小数点后20位)。
我需要知道的是,我是否可以设置一些编译器标志,使GCC和sun-studio编译器的行为相同。附加的图像在双精度数据类型中显示不同。左边是GCC的输出,另一个是sun-studio的输出。

发布于 2020-01-14 17:12:32
主要问题来自于此:
我正在尝试在两个不同的平台上获得完全相同的结果
您不能保证在两个不同的平台上会有相同的结果。它们在实现浮点运算的方式上可能有很多不同之处。
您的问题的一个解决方案:定点算术。
另外,看看这些答案:
Cross Platform Floating Point Consistency
Are IEEE float and double guaranteed to be the same size on any OS?
它们是一个很好的开始,让您了解正在发生的事情。
https://stackoverflow.com/questions/59730374
复制相似问题