1

我正在尝试编写一个程序,从用户那里读取 2 个数字并将它们分开。这是我到目前为止的代码:

import java.util.Scanner;

public class divideByZero {

public static int quotient(int numerator, int denominator)
{
   return numerator / denominator;
}

public static void main(String args[])
{
   Scanner scanner = new Scanner(System.in);

    System.out.print("Please enter the first number: ");

    int numerator = scanner.nextInt();

    System.out.print("Please enter the second number: ");

    int denominator = scanner.nextInt();

    int result = quotient( numerator, denominator );

    float result2 = (float)result;

    System.out.printf("\n The first number %d divided by the second number "
            + "%d = %f\n", numerator, denominator, result2 );

}

我的计算有问题。例如,当我输入 3 除以 4 时,我得到的结果是 0.000000。如何获得正确的结果到小数点后 2 位?

4

5 回答 5

1

在划分分子和分母之前将它们转换为浮点数。

import java.util.Scanner;

public class divideByZero {

public static float quotient(float numerator, float denominator)
{
   return numerator / denominator;
}

public static void main(String args[])
{
   Scanner scanner = new Scanner(System.in);

    System.out.print("Please enter the first number: ");

    int numerator = scanner.nextInt();

    System.out.print("Please enter the second number: ");

    int denominator = scanner.nextInt();

    float result = quotient( (float) numerator, (float) denominator );

    System.out.printf("\n The first number %d divided by the second number "
            + "%d = %f\n", numerator, denominator, result );

}
于 2011-06-10T02:38:18.030 回答
1

为什么不使用数据类型 double 而不是 float?

这是一些格式化为两位小数的代码:

import java.text.*;

public class DecimalPlaces {

   public static void main(String[] args) {

       double d = 1.234567;
       DecimalFormat df = new DecimalFormat("#.##");
       System.out.print(df.format(d));
   }

}
于 2011-06-10T02:39:54.503 回答
1

以下更改将满足您的需求。

public static float quotient(int numerator, int denominator)
{
    return (float)numerator / (float)denominator;
}

float result = quotient( numerator, denominator );

System.out.printf("\n The first number %d divided by the second number "
        + "%d = %.2f\n", numerator, denominator, result2 );

您不能对 int 进行除法并获得小数 int(没有这样的事情),因此必须使用浮点数进行除法并将其存储到浮点数中。%.2f 将其限制为 2 个小数位。

于 2011-06-10T02:40:36.017 回答
0

您得到 0.0000 是因为您将整数相除并将结果存储回整数。要查看小数部分,您可以将 result 声明为浮点变量。

当它起作用时,要打印 2 个小数,您可以使用 printf 格式。

在 C 语言中,它类似于 %.2f。

基于这些错误,我认为你会从阅读数据类型中受益,尤其是浮点数。

于 2011-06-10T02:39:16.267 回答
0

如果将 quotient 方法的返回类型从 int 更改为 float,它将不再将答案四舍五入为最接近的整数。

public static float quotient(int numerator, int denominator)
{
   return (float) numerator / (float) denominator;
}
于 2011-06-10T02:39:17.637 回答