我建立了一个并行和代码来汇总大量的浮点数然后我发现当数字的数量大于100000000时,结果会出错.然后我构建一个串行代码进行比较.序列号也输错了号码.谁知道为什么?谢谢!
我的简单代码如下.
结果是"1.67772e + 007".它应该是1e + 008
int main()
{
size_t N=100000000;
cout<<"n is : "<<N<<endl;
clock_t start = clock();
task_scheduler_init init;
vector<float> myvec;
vector<float>* pvec;
for(int i=0;i<N;i++)
myvec.push_back(1.0f);
pvec=&myvec;
float mysum;
mysum=parallelSum(pvec);
cout<<" the p sum is: "<<mysum<<endl;
clock_t finish = clock();
cout<<"Time Used = "<<(finish - start)/CLOCKS_PER_SEC<<endl;
mysum=0;
for(int i=0;i<N;i++)
mysum+=myvec[i];
cout<<" the s sum is: "<<mysum<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud) c++ ×1