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 に答える
0

整数を除算し、その結果を整数に戻して格納しているため、0.0000 を取得しています。小数部分を表示するには、結果を float 変数として宣言できます。

それが機能している場合、小数点以下 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 に答える