Android アプリの実装で、ある数字を指定した範囲 [min, max]に収まるように調整したいときは、MathUtils.clamp()
というユーティリティ関数を使用できます。
// import androidx.core.math.MathUtils
var x = -150
x = MathUtils.clamp(x, -100, 100) //=> -100
clamp()
のような関数は Java のコアライブラリとして提供されていてもよさそうなのですが、現状は存在しないので Android がライブラリとして提供してくれています。
とはいっても、中身は下記のような簡単な実装です。
// MathUtils class
public static int clamp(int value, int min, int max) {
if (value < min) {
return min;
} else if (value > max) {
return max;
}
return value;
}
ちなみに上記の代わりに、次のように書けば同じことができると思うかもしれませんが、
x = max(min(x, 100), -100)
このようにすると、else-if
ではなく全て if
分岐になってしまい効率が悪いです。