データ分析実践
中級問題チェック

問題 18 /40

Pythonの数値表現と浮動小数点数に関する説明で、誤っているものはどれか。

選択 1

「1.1e+2」は「110」を表す。

選択 2

「123.45」は「12345×10^-2」と計算する(^は指数)。

選択 3

小数の計算は誤差が発生しない。

選択 4

浮動小数点数には有効桁数がある。

解説

選択肢3が正解です。 【選択肢1】 「1.1e+2」は「110」を表す。 正しい説明です。 Pythonで数値を表現する際に登場する「e」は次の意味です。 ■ eの右側に正の整数がある場合 eの左側の小数に、eの右側の回数だけ10を掛けます。 選択肢1の「1.1e+2」であれば、1.1に10を2回掛ける、つまり100を掛けるため、「110」を表します。 ■ eの右側に負の整数がある場合 eの左側の小数に、eの右側の回数だけ10で割ります。 例えば「1.1e-2」であれば、1.1を10で2回割る、つまり100で割るため、「0.011」を表します。 【選択肢2】 「123.45」は「12345×10^-2」で計算できる。 正しい説明です。 コンピュータは小数を直接扱うことができないため、「123.45」は「12345×10^-2」と計算します。 指数がマイナスになっている「10^-2」の部分は、10を1/10(10分の1)にしてから2乗するので1/100になります。12345に1/100を掛けることで「123.45」を表します。 「12345×10^-2」の「12345」は仮数、「10」は基数、「-2」は指数で、仮数と指数を使って小数の数値を扱います。指数の値によって小数点の位置が移動するため、「浮動小数点数」と呼ばれています。 【選択肢3】 小数の計算は誤差が発生しない。 誤った説明です。 例えば1/3(3分の1)を計算すると、0.333333〜と3が無限に続きますが、コンピュータはメモリに限界があるため、どこかで切る必要があります。 コンピュータは数値を2進数で扱います。例えば0.05を2進数で表すと、 0.0000110011001100… のような循環小数になるため、途中で切る必要があります。 途中で切るため、演算処理をする際に誤差が生じることがあります。 【選択肢4】 浮動小数点数には有効桁数がある。 正しい説明です。 浮動小数点数は誤差が生じる代わりに、非常に広い範囲の数を扱うことができます。 例えばfloat64のデータ型だと、-1.7976931348623157e+308〜1.7976931348623157e+308の範囲を表現することができます。 ただし、小さい数字の計算は誤差は生まれませんが、大きい数字は誤差が生まれます。 有効桁数とは、計算によって誤差が生まれない、信頼できる桁数を指します。例えばfloat32の場合は10進数で6桁、float64の場合は10進数で15桁です。 (公式書籍 p.145)