Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 四舍五入应该返回的双变量,与打印的变量相反_C++_Double_Rounding - Fatal编程技术网

C++ 四舍五入应该返回的双变量,与打印的变量相反

C++ 四舍五入应该返回的双变量,与打印的变量相反,c++,double,rounding,C++,Double,Rounding,我正在编写一个平均值函数,它取数组的平均值,并返回小数点后2位的结果。然而,我在网上找到的唯一方法是使用printf()或cout() 但我不希望每次调用这个函数时都打印出来,因为它被用于其他函数中,比如方差方程和标准偏差方程,它们不应该显示平均函数 如果有人能告诉我这样做的方法,我将永远感激。我认为我的问题足够广泛,以至于不需要真正的代码,但在这里它只是以防万一。它只会持续好几个小数点。不确定这是一个精确的值还是一个分界点 double avg(int a[],int n) // comput

我正在编写一个平均值函数,它取数组的平均值,并返回小数点后2位的结果。然而,我在网上找到的唯一方法是使用
printf()
cout()

但我不希望每次调用这个函数时都打印出来,因为它被用于其他函数中,比如方差方程和标准偏差方程,它们不应该显示平均函数

如果有人能告诉我这样做的方法,我将永远感激。我认为我的问题足够广泛,以至于不需要真正的代码,但在这里它只是以防万一。它只会持续好几个小数点。不确定这是一个精确的值还是一个分界点

double avg(int a[],int n) // compute the average of n data storing in the array a
{
    double addsum = (double)sum(a,n)/(double)n;
    return addsum;
}

您可以移动该值,截断它并将其移回

示例代码
由于浮点值始终是二进制的,所以您最好返回与您真正想要的十进制数最接近的二进制数。但这一过程相对容易

double round_two_places(double x)
{
    return floor(x * 100.0 + 0.5) / 100.0;
}
提供与其参数最接近的整数。要模拟小数点后第三位的舍入,请使用
std::round(addsum*100.0)/100.0

double avg(int a[],int n) // compute the average of n data storing in the array a
{
    double addsum = (double)sum(a,n)/(double)n;
    return std::round(addsum*100.0)/100.0;
}

使用头文件
math.h
中的
ceil
函数,按以下方式四舍五入到两个小数点:

double avg(int a[], int n) 
{
    double addsum = (double) sum(a, n) / (double) n;
    addsum = ceil(x * 100.0 - 0.5) / 100.0;
    return addsum;
}
double avg(int a[],int n) // compute the average of n data storing in the array a
{
    double addsum = (double)sum(a,n)/(double)n;
    return std::round(addsum*100.0)/100.0;
}
double avg(int a[], int n) 
{
    double addsum = (double) sum(a, n) / (double) n;
    addsum = ceil(x * 100.0 - 0.5) / 100.0;
    return addsum;
}