如何获得除法的浮点数结果?
虽然我将平均数组定义为浮点数。
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;
因为为了获得浮点结果/
操作中使用的两个变量中的任何一个都必须是浮点数。