浮点格式数组的平均值

Posted

技术标签:

【中文标题】浮点格式数组的平均值【英文标题】:The average of an array in float format 【发布时间】:2020-06-10 13:09:35 【问题描述】:

我如何得到除法的浮点结果?

虽然我将平均数组定义为浮点数。

int main()
    
const int Number = 20; 
int Fibonacci[Number]; 
float average[Number];
for ( int i =0; i <= Number; i++ )

    if ( i == 0 ) 
       Fibonacci[i] = 0;
    else if ( i == 1 ) 
       Fibonacci[i] = 1;
    else 
       Fibonacci[i] = Fibonacci[i -1] + Fibonacci[i -2];

        //average[i] = (Fibonacci[i -1] + Fibonacci[i -2])/2 ;   
       


cout<< "The first 20 Fibonacci series numbers are: \n";
for ( int i = 1; i <= Number; i++)
    cout<< Fibonacci[i]<<endl;





cout<< "The average adjacent array numbers are: \n";
for ( int i = 3; i <= Number; i++)
   average[i] = (Fibonacci[i]/2);
    //cout.precision(0);

问题来了

    cout<< average[i]<<endl;     <-----here the problem!!


return 0;

感谢您的帮助。 提前致谢。

【问题讨论】:

你在做整数除法。 Fibonacci 包含 int1 也是一个 int。您想先将其中一个值转换为浮点数。例如:average[i] = (Fibonacci[i]/2.f) 这能回答你的问题吗? Why does dividing two int not yield the right value when assigned to double? for ( int i =0; i &lt;= Number; i++ ) 应该是 for ( int i =0; i &lt; Number; i++ )。正如所写,循环的最后一次传递离开了数组的末尾。 【参考方案1】:

当你做除法时,你是在做一个整数除法,所以你不会得到浮点结果。一个简单的修复方法如下:

average[i] = Fibonacci[i] / 2.0f;

请注意,如果 / 的操作数之一是 float,那么您将得到浮点除法。

另外,请注意您的循环索引在数组中太远了。你需要在Number之前停下来,像这样:

for ( int i = 0; i < Number; i++)

这是因为有效的数组索引来自0 .. (Number - 1)

【讨论】:

【参考方案2】:

如果Fibonacci[i]int 类型,那么(Fibonacci[i]/2) 是一个整数除法,得到一个整数值(没有任何小数部分)。将此积分结果分配给浮点数不会改变您已执行积分除法的事实。

您可以通过将其中一个操作数设为浮点值来强制进行浮点除法。

所以 (1) 使用任何一个演员...

((float)Fibonacci[i])/2

或(2)除以2.0f(这是一个浮点值):

Fibonacci[i]/2.0f

【讨论】:

2.0double2.0ffloat【参考方案3】:

只需像这样使用类型转换fibonacci 数组-

average[i] = (float)Fibonacci[i]/2;

因为为了获得浮点结果,/ 操作中使用的两个变量中的任何一个都必须是浮点数。

【讨论】:

@PeteBecker 谢谢。我只是使用他的参考资料,修改最少。但是,我已经更新了我的解决方案。

以上是关于浮点格式数组的平均值的主要内容,如果未能解决你的问题,请参考以下文章

数组数组的平均值

在 Swift 中以浮点精度从 CMSampleBuffer 获取“CIAreaAverage”的 RGB 平均值

RuntimeError:只能计算浮点类型的平均值。取而代之的是字节。对于平均值 += images_data.mean(2).sum(0)

怎样用C语言求平均数

计算数组的最大长度,使得平均值小于给定值

如何按升序对这个浮点数值列表进行排序?