【问题标题】:I need to use double instead of int for my outcome to be correct. Why? (Java)我需要使用 double 而不是 int 才能使我的结果正确。为什么? (爪哇)
【发布时间】:2015-09-25 14:10:19
【问题描述】:

今天我尝试用 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

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

提前谢谢你。

【问题讨论】:

  • 整数除法的结果是int,没有小数部分。
  • 右:int x = y/z 将在所有 z > y 都是整数时返回 x = 0。在 Java、C、C++、C# 等中是正确的。
  • 所以(int) 5/2 will be 2(int 实际上是 2.5 但 .5 被忽略)(double) 5/2 will be 2.5(double 能够存储它)

标签: java eclipse int double average


【解决方案1】:

为了使 added/amount 返回非整数,addedamount 必须为 floatdouble 或强制转换为其中任何一个。

当两者都是int 时,进行整数除法,除法后结果仅转换为double,以便存储在您的double average 变量中。

【讨论】:

  • 我现在明白了。谢谢。
【解决方案2】:

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

【讨论】:

  • 我会记住的。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-14
  • 1970-01-01
  • 2013-10-02
  • 2022-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多