我需要使用 double 而不是 int 来使我的结果正确。为什么? (Java)

I need to use double instead of int for my outcome to be correct. Why? (Java)

今天我尝试在 Java 中编写一个简单的程序,它可以计算出我输入的数字的平均值。

问题是,如果我使用 int added(如下所示),我不会得到与使用 double added 时相同的答案。

代码:

public class Main {

    public static void main(String[] args) {

        int amount;
        int number;
        int added = 0;
        double average;

        Scanner input = new Scanner(System.in);

        System.out.println("This program calculates the average of the numbers entered by you.");
        System.out.println("How many numbers do you want to enter?");
        amount = input.nextInt();

        for(int i=1; i<=amount; i++){
            System.out.println("Enter a number:");
            number = input.nextInt();
            added = added + number;
        }

        average = added/amount;
        System.out.println("The average of the numbers entered is: " + average);

    }

}

结果:

This program calculates the average of the numbers entered by you.
How many numbers do you want to enter?
6
Enter a number:
3
Enter a number:
2
Enter a number:
4
Enter a number:
1
Enter a number:
6
Enter a number:
5
The average of the numbers entered is: 3.0

当我使用 double 时,我得到了正确的答案:

public class Main {

    public static void main(String[] args) {

        int amount;
        int number;
        double added = 0;
        double average;

        Scanner input = new Scanner(System.in);

        System.out.println("This program calculates the average of the numbers entered by you.");
        System.out.println("How many numbers do you want to enter?");
        amount = input.nextInt();

        for(int i=1; i<=amount; i++){
            System.out.println("Enter a number:");
            number = input.nextInt();
            added = added + number;
        }

        average = added/amount;
        System.out.println("The average of the numbers entered is: " + average);

    }

}

当我使用 double added 而不是 int added 时的结果:

This program calculates the average of the numbers entered by you.
How many numbers do you want to enter?
6
Enter a number:
3
Enter a number:
2
Enter a number:
4
Enter a number:
1
Enter a number:
6
Enter a number:
5
The average of the numbers entered is: 3.5

为什么会发生这种情况,我应该怎么做才能避免这种情况? 对我来说,似乎 added 可能是一个整数,因为我不加小数但我加整数。

提前致谢。

为了 added/amount 到 return 一个非整数,addedamount 必须是 floatdouble 或强制转换对他们中的任何一个。

当两者都是int时,进行整数除法,除法后的结果只转换为double,以便存入你的doubleaverage变量。

两个元素都是整数的除法结果将是一个整数。至少其中一个需要是浮点数或双精度数才能使除法结果为浮点数。