Scala のモジュロ演算子

Suraj P 2023年6月21日
  1. Scala のモジュロ演算子
  2. Scala の floorMod() メソッド
  3. Scala の %(y:Float) メソッド
Scala のモジュロ演算子

この記事では、モジュロ演算子 (%) の使用方法と、Scala のモジュロに関連するその他のメソッドを学習します。

Scala のモジュロ演算子

剰余演算子 % は、Scala で 2つの数値を除算するときに剰余、特に符号付き剰余を求めるために使用されます。

構文:

val z = x % y

z には x を y で割った余りが入ります。 それをよりよく理解するために例を見てみましょう。

コード例:

object MyClass {

    def main(args: Array[String]) {

       val x = 15
       val y = 4
       val z = x % y
       println(z)
    }
}

出力:

3

15 を 4 で割った余りは 3 で、変数 z に格納され、コンソールに出力されます。

Scala の floorMod() メソッド

Scala では、Math floorMod() を使用して、渡された引数のフロア モジュロを返します。 このメソッドをオーバーロードして、int および long 引数を取ることができます。

除数がゼロの場合、ArithmeticException 除算ゼロ がスローされます。

構文:

Math.floorMod(data_type x, data_type y)

ここで、パラメータ a は被除数であり、パラメータ y は除数です。 これらのパラメーターは、int または long のいずれかです。

このメソッドは、(x - (floorDiv(x,y)*y) のフロア モジュロを返します。

コード例:

object MyClass {
    def main(args: Array[String]) {

       val x = 15
       val y = 4
       val z = Math.floorMod(x,y)
       println(z)
    }
}

出力:

3

よくある質問の 1つは、Scala の floorMod() メソッドと % 演算子の違いは何ですか? です。

引数、つまり被除数と除数が の場合はどちらも同じですが、一方または両方が負の場合は動作が異なります。 これは主に、メソッドが (x - (floorDiv(x,y)*y) のフロア モジュロを返し、その答えが floorDiv() メソッドに依存しているために発生します。

簡単に言うと、floorMod() メソッドは divisor と同じ符号を与えます。つまり、記号 y が何であっても、結果を返すときは同じ符号に従います。

コード例:

object MyClass {

    def main(args: Array[String]) {

       println("first: ")
       println(Math.floorMod(+4, -3));
       println((+4 % -3))

        println("second: ")

       println(Math.floorMod(-4, +3))
       println((-4 % +3))

        println("Third: ")
       println(Math.floorMod(-4, -3))
       println((-4 % -3))

    }
}

出力:

first:
-2
1
second:
2
-1
Third:
-1
-1

Scala の %(y:Float) メソッド

Scala では、double を float 値で割った余りを返したい場合に %(y:Float) を使用します。

構文:

double_value.%(y : Float)

コード例:

object MyClass {

    def main(args: Array[String]) {

      val rem = (16.50012.toDouble).%(13:Float)
      println("The remainder is")
      println(rem)

    }
}

出力:

The remainder is
3.500119999999999
著者: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub