为什么mingw编译的结果与其他编译器不一样?是错的吗
mingw吧
全部回复
仅看楼主
level 1
zdaq213 楼主
原问题出处:http://bbs.chinaunix.net/thread-4059559-1-1.html
看到这个帖子提出的问题,不明白原因?
#include<iostream>
using namespace std;
int main(void)
{
double x = 0.1;
for(int i=0;i<1000000;i++){
x = 4.0*x*(1.0-x); }
cout <<"X= "<<x<<endl;
return 0;
}
在codeblocks 12.11(自带的编译器mingw) 及codeblocks 10.5(自带的编译器mingw) 中得到的结果都是
x = 0.496206
但是我在 VS2008 (Win 7 x64 环境)中用MSVC 编译 编译及用ICC 编译运行得到的结果 都是 :0.0461009
为什么???
2013年07月13日 12点07分 1
level 2
gcc 的计算方法可能损失了一些精度吧, 这种循环过多精度要求较高的就不要用默认浮点数折腾了,用gmp类的专用计算库
2013年07月30日 05点07分 2
谢谢
2014年07月16日 02点07分
level 1
MSVC和ICC用的应该是SSE2的浮点算数,精度略低。
2014年06月27日 14点06分 3
1