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