gpt4 book ai didi

一组 float 可以全部高于平均水平吗?

转载 作者:太空狗 更新时间:2023-10-29 15:14:58 25 4
gpt4 key购买 nike

我处理的代码本质上可以归结为:

float child[24];
// assume child[] is filled here with some values
float sum = 0;
float avg;
for (int i = 0; i < 24; i++)
sum += child[i];
avg = sum / 24;

int n_above_avg = 0;
int n_below_avg = 0;
for (int i = 0; i < 24; i++)
if (child[i] <= avg)
n_below_avg++;
else
n_above_avg++;

由于 float 不精确,是否有可能在这段代码的末尾,n_below_avg 等于 0?假设不会发生溢出,所有的程序员都是好看的。

最佳答案

计算avg如果您使用,从技术上讲, float 组的所有元素都可能高于 avg。 .

确实,如果所有元素的值都相同v并导致近似值,使得计算出的 avg相对于数学结果向下舍入 v , 那么数组中的所有元素都大于 avg .

排序值v会导致这种行为的是一个值,其位设置为其有效数的最低有效位,因此将该值与其自身相加 23 次并除以 24 会导致舍入。如果我必须找到一个,我会一个一个地枚举 float ,直到我找到一个这样的值,相信在找到一个之前只需要几分之一秒。

技巧exist计算 float 数组的精确总和。一种著名的算法是在 Python 中实现的。使用这些技术,可以计算出数组的正确舍入平均值。如果avg是数组的正确舍入平均值,那么我相信数组中的所有元素都不可能高于它。

关于一组 float 可以全部高于平均水平吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20102906/

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