gpt4 book ai didi

c - float 组的总和返回不同的结果

转载 作者:太空宇宙 更新时间:2023-11-04 06:12:26 24 4
gpt4 key购买 nike

<分区>

我这里有一个 float 类型的函数 sum() 接受一个 float 类型的指针 t > 和一个整数 size。它返回数组中所有元素的总和。然后我使用该函数创建了两个数组。一个在第一个索引处具有 BIG 值,一个在最后一个索引处具有 BIG 值。当我返回每个数组的总和时,我得到不同的结果。
这是我的代码:

#include <stdlib.h>
#include <stdio.h>

#define N 1024
#define SMALL 1.0
#define BIG 100000000.0

float sum(float* t, int size) { // here I define the function sum()
float s = 0.0;
for (int i = 0; i < size; i++) {
s += t[i];
}
return s;
}

int main() {
float tab[N];
for (int i = 0; i < N; i++) {
tab[i] = SMALL;
}

tab[0] = BIG;
float sum1 = sum(tab, N); // initialize sum1 with the big value at index 0
printf("sum1 = %f\n", sum1);

tab[0] = SMALL;
tab[N-1] = BIG;
float sum2 = sum(tab, N); // initialize sum2 with the big value at last index
printf("sum2 = %f\n", sum2);

return 0;
}

编译代码并运行后,我得到以下输出:

Sum = 100000000.000000
Sum = 100001024.000000

为什么即使数组具有相同的元素(但索引不同),我还是会得到不同的结果。

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