大家好,我是这种语言的新手,我做了一个关于斐波那契的简单程序
和程序工作正常,但当我尝试获取平均值时出现奇怪的行为

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的结果浮点,然后进行除法。

10-01 19:43