不能使用double,不能使用int,我用什么来停止舍入? (Java)

问题描述 投票:0回答:1

我对 Java 非常陌生,这是我目前拥有的实验室的描述:

统计数据通常是使用不同数量的输入数据来计算的。编写一个程序,以任意数量的非负整数作为输入,并输出最大值和平均值。负整数结束输入,不包含在统计中。假设输入至少包含一个非负整数。

输出小数点后两位的平均值并换行,可以通过以下方式实现:

System.out.printf("%.2f\n", average);

例如:当输入为:

15 20 0 3 -1

输出为:

20 9.50

这是我的代码:

      int count = 0;
      int sumNums = 0;
      int totalSumNums = 0;
      double average = 0;
      int bigNumber = -1;
      
      sumNums = scnr.nextInt();
      while (sumNums >= 0) {
         if (sumNums > bigNumber) {
            bigNumber = sumNums;
         }
         totalSumNums = totalSumNums + sumNums;
         count = count + 1;
         sumNums = scnr.nextInt();
      }
         average = totalSumNums / count;
      System.out.print(bigNumber + " ");
      System.out.printf("%.2f\n", average);

大多数情况下它是有效的,但我在最后一行遇到了问题。如果我使用 double,则数字会四舍五入。例如,如果我的输入是:2 3 -1,那么我的输出是 3 2.00 而不是 3 2.50。我尝试了 int ,但这根本不起作用(这是我所知道的唯一的其他数字)。我非常无法弄清楚这一点,而且对于即将到期的项目我也确实需要知道这一点。请帮忙!!!

编辑:我是个白痴。我所要做的就是改变线路:

average = totalSumNums / count;
average = (double)totalSumNums / count;

java double average rounding rounding-error
1个回答
1
投票

我自己不是一个经验丰富的程序员,但我认为我的建议可能对你有帮助。

在 Java 中将两个整数相除时,结果始终是一个整数。尝试:

双重平均 = 0.0;

并尝试投射平均变量:

平均值 =(双)totalSumNums / 计数;

如果这不起作用,请留下评论,我将运行代码并检查它还可能需要什么。

© www.soinside.com 2019 - 2024. All rights reserved.