公共静态双重方法?

时间:2013-11-03 17:34:42

标签: java

import java.util.Scanner;

public class test {

    private static int number1 = 100;
    private static int number2 = 1;

    public static double avgAge() {

        return (number1 + number2) / 2;
    }

    public static void main(String[] args) {

        System.out.println("Average number: " + test.avgAge());
    }   
}

为什么test.avgAge()= 50.0而不是50.5?有没有办法输出50.5?

5 个答案:

答案 0 :(得分:3)

计算以整数计算完成。

如果你用2代替2,你将获得50.5。我建议在该行添加注释,以便向未来的读者解释。 或者,您可以显式转换为double:

((double) (number1 + number2)) / 2

答案 1 :(得分:2)

只需替换此功能

import java.util.Scanner;

public class test {

private static int number1 = 100;
private static int number2 = 1;

public static double avgAge() {

    return (number1 + number2) / 2.0;
}

public static void main(String[] args) {

    System.out.println("Average number: " + test.avgAge()); //Average number: 50.5
}   
}

答案 2 :(得分:0)

这是因为您在使用ints进行计算之前将其作为double返回。执行以下操作:

private static double number1 = 100.0;
private static double number2 = 1.0;

将这些更改为double。另外,将2更改为2.0:

    return (number1 + number2) / 2.0;

在此处详细了解intsdoubles

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

答案 3 :(得分:0)

这是因为类型推广。

如果在操作中,任何操作数都是double,则结果将提升为double。

由于这里所有操作数都是整数,因此除法产生一个int。

Type Promotion

答案 4 :(得分:-2)

return ((double)(number1 + number2)) / 2;