データ分析実践
中級問題チェック
問題 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)