嗨,伙计们,我对这个简单的关于斐波那契的简单程序有点新鲜 并且该程序工作正常但是当我试图获得平均数时存在奇怪的行为
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;
我不知道为什么会这样做所以任何人都可以帮助我解释这个,那些人。
答案 0 :(得分:3)
因为在第二种情况下
fibonacci.fibonaccifun(5)/5
转到2,因为fibonaccifun
和5的结果都是整数,那么你转为浮动。 (如果你除2个整数,结果是一个int,而int显然不能有小数)
在第一种情况下
(float) ( fibonacci.fibonaccifun(5))
使fibonaccifun
的结果为浮动,然后进行除法。
答案 1 :(得分:0)
你需要至少施放分子或分母
((float) fibonacci.fibonaccifun(5)/5)
你正在划分2个整数。你永远不会得到任何东西,只有一个int铸造浮动(因此2.0)
修正:
(((float) fibonacci.fibonaccifun(5))/5)
答案 2 :(得分:0)
操作顺序:在数学和计算机编程中,操作顺序(有时称为操作符优先级)是用于明确说明应在给定数学表达式中首先执行哪些过程的规则。
http://en.wikipedia.org/wiki/Order_of_operations
圆括号 指数 乘法 师 加成 减法
这是一个完美的例子,说明如何切换括号可以将整个程序的逻辑推出门外。