Java における整数除算

JavaJavaBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Java における整数の除算について学びます。除算は、1つの量を別の量で割ることができる数学的演算です。Java では、整数の除算を行う方法がいくつかあり、それらの違いを理解することが重要です。

環境の設定

ターミナルを開き、次のコマンドを使用して新しいJavaファイルを作成します。

touch ~/project/IntegerDivision.java

単純な整数の除算

このステップでは、Java において単純な整数の除算を行う方法を学びます。単純な整数の除算とは、除数と被除数の両方が整数で、結果も整数である場合を指します。

public class IntegerDivision {
    public static void main(String[] args) {
        int a = 25;
        int b = 5;
        int c = a / b;
        System.out.println(a + " / " + b + " = " + c);
    }
}

ここでは、2つの整数 ab を定義し、/ 演算子を使用して除算演算を行います。結果は整数 c に格納されます。最後に、System.out.println() を使用して結果を出力します。

コードを実行するには、次のコマンドを使用します。

javac IntegerDivision.java && java IntegerDivision

出力は以下のようになるはずです。

25 / 5 = 5

整数除算におけるデータの損失

このステップでは、整数除算で精度が失われる状況をどのように処理するかを学びます。

public class IntegerDivision {
    public static void main(String[] args) {
        int a = 10;
        int b = 3;
        int c = a / b;
        System.out.println(a + " / " + b + " = " + c);
    }
}

この場合、2つの整数 ab を定義しますが、精度が失われるため異なる結果が得られます。この演算の結果は 3.3333 ではなく 3 です。なぜなら、整数で処理しているからです。

コードを実行するには、ステップ2と同じコマンドを使用します。

javac IntegerDivision.java && java IntegerDivision

出力は以下のようになるはずです。

10 / 3 = 3

倍精度浮動小数点数型を用いた除算

このステップでは、精度を維持する必要がある状況をどのように処理するかを学びます。

public class IntegerDivision {
    public static void main(String[] args) {
        int a = 10;
        int b = 3;
        double c = (double) a / b;
        System.out.println(a + " / " + b + " = " + c);
    }
}

ここでは、2つの整数 ab を定義します。ただし、c のデータ型を int から double に変更します。また、a を倍精度浮動小数点数にキャストして、除算演算を倍精度浮動小数点数で行うようにします。最後に、結果を出力します。

コードを実行するには、ステップ2と同じコマンドを使用します。

javac IntegerDivision.java && java IntegerDivision

出力は以下のようになるはずです。

10 / 3 = 3.3333333333333335

共通の倍精度浮動小数点数型を用いた除算

このステップでは、精度を維持する必要がある状況を処理する別の方法を学びます。

public class IntegerDivision {
    public static void main(String[] args) {
        int a = 10;
        int b = 3;
        double c = a / 3.0;
        System.out.println(a + " / 3.0 = " + c);
    }
}

ここでは、単に演算子の1つを 3 ではなく 3.0 を使って倍精度浮動小数点数に変更するだけです。これにより、a が倍精度浮動小数点数で除算されることが保証されます。

コードを実行するには、ステップ2と同じコマンドを使用します。

javac IntegerDivision.java && java IntegerDivision

出力は以下のようになるはずです。

10 / 3.0 = 3.3333333333333335

共通の倍精度浮動小数点数型を用いた複数の除算

このステップでは、倍精度浮動小数点数で複数の除算を行う方法を学びます。

public class IntegerDivision {
    public static void main(String[] args) {
        int a = 10;
        int b = 3;
        double c = a / 3.0;
        double d = 2.0 / b;
        System.out.println(a + " / 3.0 = " + c);
        System.out.println("2.0 / " + b + " = " + d);
    }
}

2つの倍精度浮動小数点数型の変数 cd を定義し、2回の除算を行います。前述の通り、最初の除算では倍精度を保証するために 3.0 を使用します。2番目の除算では、倍精度を保証するために 2.0 を使用します。

コードを実行するには、ステップ2と同じコマンドを使用します。

javac IntegerDivision.java && java IntegerDivision

出力は以下のようになるはずです。

10 / 3.0 = 3.3333333333333335
2.0 / 3 = 0.6666666666666666

除算代入

このステップでは、除算代入演算子 /= を使って除算を行う方法を学びます。これは x = x / y の省略記法です。

public class IntegerDivision {
    public static void main(String[] args) {
        int a = 10;
        int b = 3;
        double c = 2.0;
        c /= b;
        System.out.println("2.0 / " + b + " = " + c);
    }
}

int 型の変数 aint 型の変数 b、および double 型の変数 c を定義します。c2.0 を初期化します。そして、除算代入演算子を使って cb で割ります。最後に、結果を出力します。

コードを実行するには、ステップ2と同じコマンドを使用します。

javac IntegerDivision.java && java IntegerDivision

出力は以下のようになるはずです。

2.0 / 3 = 0.6666666666666666

剰余演算子を用いた整数除算

このステップでは、除算演算の余りを返す剰余演算子 % について学びます。

public class IntegerDivision {
    public static void main(String[] args) {
        int a = 10;
        int b = 3;
        int c = a % b;
        System.out.println(a + " % " + b + " = " + c);
    }
}

int 型の変数 ab を定義し、剰余演算子 % を使って除算演算の余りを求めます。結果は int 型の変数 c に格納され、その結果を出力します。

コードを実行するには、ステップ2と同じコマンドを使用します。

javac IntegerDivision.java && java IntegerDivision

出力は以下のようになるはずです。

10 % 3 = 1

ゼロでの除算

このステップでは、ゼロで除算した場合に何が起こるかを学びます。

public class IntegerDivision {
    public static void main(String[] args) {
        int a = 10;
        int b = 0;
        int c = a / b;
        System.out.println(a + " / " + b + " = " + c);
    }
}

2つの int 型の変数 ab を定義し、ab で除算しようとします。ゼロでの除算は許されないため、Javaは ArithmeticException と呼ばれる実行時例外を投げます。

コードを実行しようとすると、次のようなエラーメッセージが表示されます。

Exception in thread "main" java.lang.ArithmeticException: / by zero
	at IntegerDivision.main(IntegerDivision.java:5)

ゼロでの除算の修正

このステップでは、条件文を使ってゼロでの除算エラーを修正する方法を学びます。

public class IntegerDivision {
    public static void main(String[] args) {
        int a = 10;
        int b = 0;
        if (b!= 0) {
            int c = a / b;
            System.out.println(a + " / " + b + " = " + c);
        } else {
            System.out.println("Cannot divide by zero");
        }
    }
}

ここでは、if 文を使って b がゼロでないかどうかをチェックしています。b がゼロでなければ、除算演算を行って結果を出力します。そうでなければ、エラーメッセージを出力します。

コードを実行するには、ステップ2と同じコマンドを使用します。

javac IntegerDivision.java && java IntegerDivision

出力は以下のようになるはずです。

Cannot divide by zero

まとめ

この実験では、Javaにおける整数除算のさまざまな方法について学びました。精度が失われる場合の対処方法、倍精度 (double) での除算の方法、および剰余演算子の使い方を学びました。また、条件文を使ってゼロでの除算エラーを処理する方法も学びました。