繁体   English   中英

C++ 浮点数差异

[英]C++ Floating point difference

我试图在 2 个不同的平台上获得完全相同的结果,即 Solaris 和 Linux(sun-studio vs GCC)。 整个代码使用双数据类型。 但是当我打印输出时,我看到浮点数的差异(如小数点后 20 位)。

我需要知道的是我是否可以设置一些编译器标志来使 GCC 和 sun-studio 编译器的行为相同。 附加图像显示了 Double 数据类型的差异。 左侧是 GCC 的输出,另一侧是 sun-studio。

在此处输入图片说明

主要问题来自于此:

我试图在 2 个不同的平台上获得完全相同的结果

您不能保证在两个不同的平台上获得相同的结果。 他们在实施浮动操作的方式上可能有很多不同。

您的问题的一种解决方案:定点算术。

另外,看看这些答案:

跨平台浮点一致性

IEEE float 和 double 是否保证在任何操作系统上都具有相同的大小?

它们是您了解正在发生的事情的一个很好的开始。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM