我需要使用 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 一个非整数,added
或 amount
必须是 float
或 double
或强制转换对他们中的任何一个。
当两者都是int
时,进行整数除法,除法后的结果只转换为double
,以便存入你的double
average
变量。
两个元素都是整数的除法结果将是一个整数。至少其中一个需要是浮点数或双精度数才能使除法结果为浮点数。
今天我尝试在 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 一个非整数,added
或 amount
必须是 float
或 double
或强制转换对他们中的任何一个。
当两者都是int
时,进行整数除法,除法后的结果只转换为double
,以便存入你的double
average
变量。
两个元素都是整数的除法结果将是一个整数。至少其中一个需要是浮点数或双精度数才能使除法结果为浮点数。