浮点格式数组的平均值



如何获得除法的浮点数结果?

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

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;
}

我感谢任何帮助。 提前谢谢。

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

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

请注意,如果要/的操作数之一是float,则得到浮点除法。

另外,请注意,您的循环索引在数组中太远。您需要在Number之前停止,如下所示:

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

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

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

可以通过将其中一个操作数设置为浮点值来强制实施浮点除法。

所以(1(使用一个演员表...

((float)Fibonacci[i])/2

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

Fibonacci[i]/2.0f

只需像这样对fibonacci数组进行类型转换-

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

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

最新更新