---
title: "「aを超えない最大の整数」とは？負の数で間違えやすいint(a)の考え方【基本情報技術者試験】"
description: "「aを超えない最大の整数」という定義を、正の小数・負の小数・数直線で整理し、小数点以下の切捨てとの違いやFE科目Aでの解き方を解説します。"
last_modified_at: "2026-08-14"
canonical_url: "https://stemtazoo.github.io/fe/floor-function/"
section: "fe"
---

## まず結論

「aを超えない最大の整数」とは、**a以下で最も大きい整数**のことです。

正の小数なら直感的ですが、負の小数では注意が必要です。

```text
3.7
→ 3

-3.7
→ -4
```

つまり、

```text
小数点以下を単純に消す
```

のではありません。

FEでは、

```text
aを超えない
= a以下
```

という定義をそのまま使って判断するのが安全です。

## 直感的な説明

数直線で考えると分かりやすくなります。

例えば、

```text
3 < 3.7 < 4
```

なので、3.7を超えない最大の整数は3です。

一方、

```text
-4 < -3.7 < -3
```

です。

ここで、

```text
-3
```

は -3.7 より大きいので、条件である

```text
-3.7を超えない
```

を満たしません。

したがって、

```text
-3.7を超えない最大の整数
→ -4
```

となります。

## 定義・仕組み

この考え方は、数学では床関数（floor function）と呼ばれます。

記号では、

```text
⌊a⌋
```

と表されます。

意味は、

```text
a以下の最大の整数
```

です。

### 正の小数の場合

例えば、

```text
a = 6.2
```

なら、

```text
6 < 6.2 < 7
```

なので、

```text
⌊6.2⌋ = 6
```

です。

### 負の小数の場合

例えば、

```text
a = -6.2
```

なら、

```text
-7 < -6.2 < -6
```

です。

`-6` は `-6.2` より大きいため使えません。

したがって、

```text
⌊-6.2⌋ = -7
```

です。

### 「小数点以下を捨てる」と何が違う？

正の数だけ見ると、

```text
6.2 → 6
```

なので、単純な切捨てと同じように見えます。

しかし負の数では、

```text
-6.2
```

の小数点以下を単純に消すと、

```text
-6
```

になります。

一方、床関数では、

```text
-7
```

です。

したがって、

```text
小数点以下を消す
≠
aを超えない最大の整数
```

です。

## 科目Aでどう出る？

科目Aでは、関数の定義を読み取り、式を変形したり具体的な値を代入して判断する問題が出ます。

例えば、

```text
int(a) は、aを超えない最大の整数を返す
```

と定義されているとします。

さらに、

```text
a = -(b+c)
```

で、

```text
b：整数
0 < c < 1
```

とします。

### ① aを展開する

```text
a = -b - c
```

です。

`-b` は整数で、そこから `0<c<1` だけ小さくなっています。

したがって、

```text
-b-1 < a < -b
```

となります。

### ② int(a)を考える

`a` を超えない最大の整数は、

```text
-b-1
```

です。

よって、

```text
int(a) = -b-1
```

となります。

### ③ a-int(a)を求める

```text
a - int(a)

= (-b-c) - (-b-1)

= -b-c+b+1

= 1-c
```

となります。

つまり、

```text
a - int(a)
→ 1-c
```

です。

## 具体例で確認する

文字式が分かりにくいときは、条件を満たす値を入れて確認する方法も有効です。

例えば、

```text
b = 5
c = 0.4
```

とします。

すると、

```text
a = -(5+0.4)
  = -5.4
```

です。

`-5.4`を超えない最大の整数は、

```text
-6
```

なので、

```text
int(a) = -6
```

です。

したがって、

```text
a - int(a)
= -5.4 - (-6)
= 0.6
```

です。

一方、

```text
1-c
= 1-0.4
= 0.6
```

なので一致します。

## どんな場面で使う？

床関数の考え方は、

- 数学的なアルゴリズム
- 座標や区間の計算
- ページ番号やグループ番号の算出
- 離散化処理
- 数値を整数区間に分ける処理

などで使われます。

FEでは、実務での用途を深掘りするより、

```text
定義を正確に読む
↓
負の数で間違えない
```

ことが重要です。

## よくある誤解・混同

### int(a)なら小数点以下を消せばよい？

問題文の定義によります。

今回のように、

```text
aを超えない最大の整数
```

と定義されているなら、床関数として考えます。

負の数では、

```text
-3.2 → -4
```

です。

### 負の数では0に近い整数を選ぶ？

違います。

見るべきなのは、

```text
aを超えない
```

という条件です。

例えば、

```text
a = -3.2
```

なら、

```text
-3 > -3.2
```

なので `-3` は使えません。

### 「最大」という言葉だけで大きい方を選ぶ？

「aを超えない」という条件が先です。

つまり、

```text
a以下の整数の中で最大
```

を探します。

### 文字式が難しいときは代入してよい？

選択問題なら有効です。

条件を満たす簡単な値を入れて、

```text
b = 整数
0 < c < 1
```

を守ったうえで計算すると、候補を絞りやすくなります。

ただし、記事としては文字式でも導けるようにしておくと理解が深まります。

## 確認問題（基本情報技術者試験対策）

実数 `x` に対して、`floor(x)` は `x` を超えない最大の整数を返すものとする。

整数 `n` と `0<d<1` を満たす実数 `d` に対し、

```text
x = -(n+d)
```

とする。

`x-floor(x)` と等しいものはどれか。

- ア. d
- イ. -d
- ウ. 1-d
- エ. d-1

<details markdown="1">
<summary>▶ クリックして答えと解説を見る（ここを開く）</summary>

**正解：ウ**

```text
x = -n-d
```

であり、

```text
-n-1 < x < -n
```

なので、

```text
floor(x) = -n-1
```

です。

したがって、

```text
x-floor(x)

= (-n-d)-(-n-1)

= 1-d
```

となります。

</details>

## まとめ（試験直前用）

- 「aを超えない最大の整数」＝ a以下の最大の整数
- 正の小数なら、すぐ左の整数になる
- 負の小数では、より小さい側の整数になる
- `3.7 → 3`
- `-3.7 → -4`
- **小数点以下を消す処理とは同じではない**
- 負の数では数直線で確認すると安全
- 文字式が難しいときは、条件を満たす具体値を代入して確認する
- **「aを超えない」という定義を最優先で読む**
