gpt4 book ai didi

c++ - 为什么两个 float 类型的变量有不同的值

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:04:27 25 4
gpt4 key购买 nike

<分区>

我有两个大小接近 1000 的整数 vector ,我要做的是检查这两个 vector 的整数平方和是否相同。所以我写了下面的代码:

std::vector<int> array1;
std::vector<int> array2;
... // initialize array1 and array2, and in the experiment all elements
// in the two vectors are the same but the sequence of elements may be different.
// For example: array1={1001, 2002, 3003, ....}
// array2={2002, 3003, 1001, ....}
assert(array1.size() == array2.size());
float sum_array1 = 0;
float sum_array2 = 0;
for(int i=0; i<array1.size(); i++)
sum_array1 +=array1[i]*array1[i];
for(int i=0; i<array2.size(); i++)
sum_array2 +=array2[i]*array2[i];

我希望 sum_array1 应该等于 sum_array2,但实际上在我的应用程序中我发现它们是不同的 sum_array1 = 1.2868639e+009sum_array2 = 1.2868655e+009。我接下来要做的是将 sum_array1sum_array2 的类型更改为 double 类型,如下代码所示:

 double sum_array1 = 0;
double sum_array2 = 0;
for(int i=0; i<array1.size(); i++)
sum_array1 +=array1[i]*array1[i];
for(int i=0; i<array2.size(); i++)
sum_array2 +=array2[i]*array2[i];

这次 sum_array1 等于 sum_array2 sum_array1=sum_array2=1286862225.0000000。我的问题是为什么它会发生。谢谢。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com