Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/153.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 不同体系结构上的浮点结果不一致!!!如何进行?_C++_Visual Studio 2010_Intel - Fatal编程技术网

C++ 不同体系结构上的浮点结果不一致!!!如何进行?

C++ 不同体系结构上的浮点结果不一致!!!如何进行?,c++,visual-studio-2010,intel,C++,Visual Studio 2010,Intel,当我在不同的体系结构上运行应用程序时,会得到不一致的浮点结果。这发生在第三个小数点之后。我能够在相同的体系结构上获得可重复的结果,但是当我在不同的体系结构上运行时,我会在浮点结果中得到不一致的结果。我说的两个建筑是尼哈勒姆和桑迪桥。该应用程序是一个64位应用程序。我使用的是Visual Studio 2010,它有英特尔作曲家XE 2013 C++ + SP1。我尝试了下面链接中推荐的解决方案,但没有改变任何事情。在我工作的行业中,数据精确到小数点后16位是非常重要的。我也在英特尔论坛上发布了这

当我在不同的体系结构上运行应用程序时,会得到不一致的浮点结果。这发生在第三个小数点之后。我能够在相同的体系结构上获得可重复的结果,但是当我在不同的体系结构上运行时,我会在浮点结果中得到不一致的结果。我说的两个建筑是尼哈勒姆和桑迪桥。该应用程序是一个64位应用程序。我使用的是Visual Studio 2010,它有英特尔作曲家XE 2013 C++ + SP1。我尝试了下面链接中推荐的解决方案,但没有改变任何事情。在我工作的行业中,数据精确到小数点后16位是非常重要的。我也在英特尔论坛上发布了这篇文章。谢谢你的帮助


如果需要16位精度(或依赖所有计算机的结果完全相同),则不应使用浮点/双精度


这些类型非常适合快速、近似的结果。如果你真的需要精确的结果,你必须使用一个类似BigNum的类来代替。

观察到的差异前面有多少个有效数字?相同的二进制应该产生相同的结果。但是针对这两台机器编译两个不同的二进制文件可能会产生稍微不同的结果,这取决于编译器如何选择优化。迪特,你是说在小数点之前?那么它的两个参数是神秘的,相同的二进制代码给出不同的结果。你的编译器选项是什么?浮点运算是不关联的。如果允许使用多个线程或使用更宽松的浮点模型(例如使用/fp:fast)将其关联,那么同一个二进制文件可能会给出不同的结果。