gpt4 book ai didi

c - pow 函数给出不需要的结果 c

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

我被要求编写一个程序来计算常规 c 中的几何和算术平均值。我写了这个函数:

double Geometric_mean(int number[], int n) //number[5]={1,2,3,4,5},n=5
{
int i;
double mean = 1;
for (i = 0;i < n;i++)
{
mean =mean*number[i];
}
mean = pow(mean,1/n); //mean=120
return(mean); //mean=1
}

在 pow 将其变为 1 而不是所需的 2.605 之前我得到了所需的结果

最佳答案

由于1nint1/n是一个欧氏除法,其结果是0 对于任何 n > 1

你应该使用double除法:

#include <cstddef>
#include <cmath>

double gmean(const int data[], std::size_t datasize)
{
double product = 1.0;
for (std::size_t i = 0 ; i < datasize ; i++)
{
product *= data[i];
}
return std::pow(product, 1.0/datasize);
}

Live example .

请注意,我用 C++ 进行了回答。 C 和 C++ 是两种不同的语言,您应该事先选择使用哪一种。

关于c - pow 函数给出不需要的结果 c,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33891141/

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