今天我試着用Java編寫一個簡單的程序,它給了我輸入的數字的平均值。我需要使用double而不是int,因爲我的結果是正確的。爲什麼? (Java)
問題是,如果我使用int添加(如下圖所示),我沒有得到相同的答案,因爲當我使用雙添加。
代碼:
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
當我使用雙,我得到正確的答案:
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);
}
}
結果,當我使用雙增加,而不是INT加入:
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
爲什麼會發生這種情況,我應該怎麼做才能避免它? 對我來說,似乎添加可能是一個整數,因爲我不加小數,但我加起來整數。
預先感謝您。
整數除法的結果是一個'int',它沒有小數部分。 – Jyr
右:int x = y/z對於所有z> y都將返回x = 0,當它們都是整數時。真正的Java,C,C++,C#等 – duffymo
所以'(int)5/2將是2'(int實際上是2.5,但是.5被忽略)'(double)5/2將是2.5'(double是能夠存儲它) –