演習課題「整数型に変更する」
右のコードエリアに、 8.13 を表示するコードがあります。これを整数型の値に変換して出力してください。
期待する出力値
8
※有料会員になるとこの動画をご利用いただけます
詳しい説明を読む
#02:数値の型
このチャプターでは、数値の型を学習しましょう。
- コンピュータは小数を正確に表現できないことがあるため、浮動小数点数は誤差を含むことがある
- コンピュータは主に次の 2 つのことから、小数を正確に表現できないことがある
- コンピュータは有限桁の数のみ扱える
- コンピュータは数値を 2 進法で扱い、2 進数では 10 進法で有限桁の数でも無限桁の数になることがある
- 【 コンピュータは有限桁の数のみ扱える 】
- コンピュータでは、一般的には数値をデータのサイズが決まった数値型として扱うため、有限桁の数しか扱えない
- そのため、無限桁の数を正確に表現することはできない
- つまり、たとえば、円周率 (3.14159...) を正確に扱うことはできない
- 【 有限桁に見える数でも、コンピュータで扱おうとすると無限桁の数になることがある 】
- 【 コンピュータ内は 2 進法 】
- 私たちが普段使っている数字は 10 進法という記法にしたがったもの
- しかし、コンピュータ内では、数値は 2 進法(※1)によって表される
- 【 有限桁の 10 進法の小数を 2 進数に変換すると無限桁になることがある 】
- すべての 10 進数は、2 進数で表現することができる
- しかし、10 進法で有限桁の数でも 2 進法では無限桁の数になってしまうことがある
- たとえば、10 進法の 0.1 は 2 進法では循環小数になって無限桁の数になってしまう (これはのちほど確認します)
- 【 なぜ無限桁の数になってしまうことがあるのか 】
- 10 進法の小数を 2 進法に変換する際は、10 進法の小数部をひたすら 2 倍し続けて 1 を作る、という方法がある(図 1)
- この方法からわかるように、有限桁の 2 進数に変換できる 10 進法の小数は、その小数部が、2 をかけ続けると 1 になる小数のみによって分解される数のみ
- つまり、10 進法の小数のうち、その小数部を 0.5, 0.25, 0.125, 0.0625, ... などの数の組み合わせの和によって表現できる数が有限桁の 2 進数に変換できる (2 進法についてご存じの方には「2 i (i < 0) のみの和によって表現できる数」といった方がわかりやすいかもしれません。)
- したがって、上述のように表現できない 10 進法の小数は、たとえ有限桁であっても、2 進法で表現するときに無限桁の数になってしまう
- 10 進法の小数を 2 進法に変換する際は、10 進法の小数部をひたすら 2 倍し続けて 1 を作る、という方法がある(図 1)
- 【 2 進法で正確に表現できない 10 進法の小数の例 】
- たとえば、10 進法の 0.1 を有限桁の 2 進数に変換することはできない(図 2)
- この例では、繰り返しが起こることから、10 進法の 0.1 は 2 進法では循環小数になる、つまり無限桁の数になることがわかる
- たとえば、10 進法の 0.1 を有限桁の 2 進数に変換することはできない(図 2)
- 【 コンピュータ内は 2 進法 】
- 【 まとめ 】
- 以上のことを 2 つのポイントにまとめると、以下のようになる
- コンピュータは有限桁の数のみ扱える
- コンピュータは数値を 2 進法で扱い、2 進数では 10 進法で有限桁の数でも無限桁の数になることがある
- この 2 つのポイントから、コンピュータは小数を正確に表現できないことがある
- 以上のことを 2 つのポイントにまとめると、以下のようになる
- 【 捕捉 】
- 【 ※1: 2 進法とは 】
- 2 進法とは、0 と 1 によって数を表記する方法のこと
- たとえば、10 進法での 2 は 2 進法では 10 と表される
- 2 進法は 0 と 1 で数字を表現するため、0 から整数を数え上げると、0, 1, 10, 11, 100, 101, ... となる
- 10 進法では、9 が 1 桁で表すことのできる数の最大値だが、2 進法ではそれが 1 なため、下 1 桁が 1 の場合、1 足すと繰り上がりが発生する
- 桁ごとの数を並べることによって自然数を表すとき、10 進法では 1 の位、10 の位、100 の位 ... だが、2 進法では 1 の位、2 の位、4 の位 ... になる。一般に 2 進法の n 番目の桁の位は 2(n-1) の位になる
- たとえば、2 進数 101 は 10 進法では、4 × 1 + 2 × 0 + 1 × 1 = 5 になる
- また、2 進法で小数を表すときは、小数第 1 位は 10 進法の 1/2、第 2 位は 1/4、第 3 位は 1/8 ... の位になる。一般に小数第 n 位は (1/2)n の位になる
- たとえば、2 進数 0.101 は 10 進法では、(1/2) × 1 + (1/4) × 0 + (1/8) × 1 = 5/8 (= 0.625) になる
- 【 ※1: 2 進法とは 】
ログインすると採点できます
コードの実行