【发布时间】:2020-02-20 06:09:04
【问题描述】:
我有一个 20 位长的数组;我想找到数组中所有负数的算术平均值,然后从这个数组的每个元素中减去这个数字。 问题是当我尝试将负数的值的总和除以负数的数量(以找到平均值)时,它会自动向下舍入到最接近的整数
代码如下:
int main()
{
double a1 = 0.0;
double b2 = 0.0; // arth mean
int arr[20] = {12, -30, 23, -43, 51, 26, 0, 88, 19, -10, 11, 2, 23, -14, 15, 6, -7, 1, -19, 120};
for(int i = 0; i < 20; i++) {
if(arr[i] < 0) {
a1 += arr[i]; // sum of negative numbers
}
}
b2 = a1 / 6;
cout << b2;
for(int i = 0; i < 20; i++) {
arr[i] = arr[i] - b2;
}
for(int i = 0; i < 20; i++) {
cout << arr[i] << " ";
}
return 0;
}
【问题讨论】:
-
问问自己:
arr中的元素是什么类型的?支持小数点的剂量吗? -
b2未四舍五入(除了自然浮点数不准确)。只有在arr中计算新值时才会取整 -
@opage_potato 你是说
cout << b2将20写入控制台吗?似乎它应该给你类似-20.5 -
数组中的值没有四舍五入,它们被截断。
-
这并没有解决问题,但
double b2 = 0.0; // arith mean应该是double arith_mean = 0.0;。使用有意义的名称。