如果我使用double sum=0
而不是int sum=0
,则会得到预期的答案(38.8),但是当我使用int
时,我会得到38.0的答案。我想知道为什么会这样,因为我的返回类型是double
,所以我不应该自动获得准确的十进制值输出。
公共课prg21 {
public static double average(int...ar)
{
int sum=0;
for(int x:ar)
{
sum+=x;
}
return sum/ar.length;
}
public static void main(String args[])
{
int []arr= {5,77,2,65,45};
System.out.println("Average="+average(arr));
}
}
我希望达到38.8,但我得到38.0
答案 0 :(得分:1)
int数据类型将删除任何十进制值
您得到38.0,因为该表达式保存为int,将小数点后的位数保留为38,然后将其返回为双精度值,因此将其转换为38.0