大家好,我是这种语言的新手,我做了一个关于斐波那契的简单程序
和程序工作正常,但当我尝试获取平均值时出现奇怪的行为
public class fibonacci {
/**
* @param args
*/
public static int fibonaccifun(int number)
{
int firstvar=1;
int secondvar=0,total=0,sum=0;
for(int i=0;i<number;i++)
{
total =firstvar+secondvar;
System.out.println(total);
firstvar=secondvar;
secondvar=total;
sum+=total;
}
return sum;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
float aver= (float) ( fibonacci.fibonaccifun(5)/5);
System.out.println(aver);
....................................
当我尝试
float aver= (float) ( fibonacci.fibonaccifun(5))/5;
结果是2.4,这是正确的值,但是当我这样做时float aver= ((float) fibonacci.fibonaccifun(5)/5);
平均值= 2.0;我不知道为什么要这么做,所以有人可以帮我解释一下吗,谢谢。
最佳答案
因为在第二种情况下fibonacci.fibonaccifun(5)/5
转到2,因为fibonaccifun
和5的结果均为整数,则将其强制转换为浮点数。 (如果将2个整数相除,则结果为一个整数,并且整数显然不能有小数位)
在第一种情况下(float) ( fibonacci.fibonaccifun(5))
使fibonaccifun
的结果浮点,然后进行除法。