y=xy = \lfloor x \rfloor

床関数 y=xy = \lfloor x \rfloor のグラフ

y=xy = \lfloor x \rfloor は、xx を超えない最大の整数を返す関数です1床関数、あるいはガウス記号と呼ばれます。数直線の上で、xx から左向きに見て最初に出会う整数、と考えると分かりやすいでしょう。

xxx\lfloor x \rfloor
2.72.722
3333
0.5-0.51-1
1.2-1.22-2

定義域と値域

定義域はすべての実数です。返る値はつねに整数なので、値域は整数全体という、とびとびの集合になります。連続な直線ではなく、離散的な高さしかとりません。

グラフの形

グラフは階段状です。各段は長さ 11 の水平な線分で、整数のたびに 11 だけ跳ね上がります。

区間
[1,0)[-1, 0)1-1
[0,1)[0, 1)00
[1,2)[1, 2)11

各段は左端を含み、右端を含みません。たとえば 1x<21 \leq x < 2 ではつねに y=1y = 1 で、x=2x = 2 に達した瞬間に y=2y = 2 へ跳びます。

不連続点

すべての整数で不連続です。整数 nn に右から近づくと極限は nn ですが、左から近づくと極限は n1n - 1 になり、両者が一致しません。跳びの大きさはつねに 11 です。

整数以外の点では、まわりで値が一定なので微分でき、導関数は 00 です。傾きが 00 の平らな段と、突然の跳びだけでできた関数です。

単調性

xx が増えれば値は減らないので、単調に非減少です。ただし段の上では値が変わらないため、狭義の単調増加ではありません。

負の数での注意

1.2=2\lfloor -1.2 \rfloor = -2 であって 1-1 ではありません。床関数は小数を切り捨てるのではなく、つねに -\infty の側へ丸めます。多くのプログラミング言語で整数除算が 00 の側へ丸めるのとは違う挙動なので、負の数を扱うときは注意が必要です。

他の関数との関係

  • xx 以上の最小の整数を返す天井関数 x\lceil x \rceil が対になる
  • xxx - \lfloor x \rfloor は小数部分を表し、周期 11 ののこぎり波になる
  • 四捨五入は x+0.5\lfloor x + 0.5 \rfloor と書ける

応用

正の整数 NN の桁数は、床関数を使って次のように求まります。

log10N+1\lfloor \log_{10} N \rfloor + 1

整数除算の商 ab\left\lfloor \dfrac{a}{b} \right\rfloor、配列の添字の計算、ページ送りの計算など、連続した量を段階に区切る場面で広く使われます。

  1. Floor and ceiling functions、Wikipedia