【问题标题】:How to get the actual average, not rounded?如何获得实际平均值,而不是四舍五入?
【发布时间】:2020-12-27 05:27:46
【问题描述】:

这就是我所拥有的(更改了此问题的打印消息),当我执行 4 和 11 时,你应该得到 7.5,但它只给我 7。我该如何解决这个问题?

import java.util.Scanner;

class U1_L6_Average_Finder {
public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    int a;
    int b;
    System.out.println("put in 4");
    a = scan.nextInt();
    System.out.println("Put in 11");
    b = scan.nextInt();
    System.out.println("Here is your average");
    System.out.print((a + b) / 2);
}

【问题讨论】:

  • 使用 double 或 float 代替 int。
  • System.out.print( (double)(a + b) /2 );
  • 您还可以通过将2(分母)更改为2.02f2.0f,将商强制转换为浮点值。如果你想要双精度,你可以使用d 而不是f
  • 我怎样才能改变它,以便只有一个输入,比如双输入而不是两个单独的输入

标签: java average mean


【解决方案1】:

您可以通过将2(分母)更改为2.02f2.0f,将商强制转换为浮点值。如果你想要双精度,你可以使用d 而不是f

public class AverageFloatingPointCoercionExample {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int a, b;

        System.out.print("Enter value #1 (4): ");
        a = scan.nextInt();

        System.out.print("Enter value #2 (11): ");
        b = scan.nextInt();

        System.out.print("Here is your average: ");
        System.out.print((a + b) / 2.0f); // 7.5
    }
}

或者,您可以显式转换分子。

System.out.print(((float) (a + b)) / 2);

【讨论】:

    【解决方案2】:

    您使用的是整数 (int a, b;),因此它会对您的结果进行四舍五入。

    使用doublefloat 代替它来获得您想要的,例如: double a, b;

    但是,如果您不想修改变量的类型,您可以使用f(例如)编辑您的最后一个System.out.print,这会将您的值转换为float,例如:

    System.out.print((a + b) / 2.0f);

    选中此项以了解有关变量的更多信息: Java Variables

    【讨论】:

      【解决方案3】:
      • 您已确定输入/平均。所以这是缺少的部分。
      • 只输出r...
      • 但是如果你想要一定的小数位数(这里是 5 个)...
      • 我这样做是为了以防您想要平均超过 2 个项目...

      import java.text.DecimalFormat;
      class Playground {
          public static void main(String[ ] args) {
              int i = 5;
              int j = 17;
              double r = (double)i/j;
              DecimalFormat df = new DecimalFormat("#.#####");
              System.out.println(r);
              System.out.println(df.format(r));
          }
      }
      

      输出:

      0.29411764705882354

      0.29412

      【讨论】:

        【解决方案4】:

        您正在使用整数除法。整数除法将导致整数作为答案。您必须将其中一个值更改为加倍。

        例子:

        System.out.println((double)(a+b)/2);

        System.out.println((a+b)/2.0));

        【讨论】:

          猜你喜欢
          • 2015-12-31
          • 2018-06-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-12-20
          • 2023-01-12
          • 1970-01-01
          相关资源
          最近更新 更多