「0.1」から「1.0」までの浮動小数点数が、どのような近似値として扱われているのかを確認するPythonのコードをご紹介しています。
Python in Excelならば、セル上の小数が、実際はどのような値なのかを似た方法で確認できます。
セル上の浮動小数点数を確認する
以下の操作手順で、「0.1」から「1.0」までの小数がどのような値なのかがわかります。
↓
A1:A2セルをA10セルまでオートフィル
↓
PythonセルにしたB1に、
num = xl("A1")
f'{num:.16f} {num:.17f} {num:.18f}'
と入力して[Ctrl]+[Enter]
↓
B1セルをB10セルまでオートフィル
実行すると下図のような状態になります。
Pythonセルに入力したコードの意味
PythonモードのB1セルに入力したコード
num = xl("A1")
f'{num:.16f} {num:.17f} {num:.18f}'
の意味は、以下のとおりです。
まず、A1セルの値を変数numに代入します。
num = xl("A1")
つづいて、
f'{num:.16f} {num:.17f} {num:.18f}'
で、拙著『Python入門を読み終えた人へ…1: 文字列フォーマットの基本』でも解説しているf-string(f文字列・フォーマット済文字列リテラル)を使って、変数numを小数点以下を16桁・17桁・18桁にフォーマットしています。
「num:」の後ろに「.○f」と指定することで、変数numの値を「f」の前に指定した桁数の固定小数点文字列にしています。
この2行のコード
num = xl("A1")
f'{num:.16f} {num:.17f} {num:.18f}'
が入力されているB1セルを下方向にオートフィルするので1行目
num = xl("A1")
の参照先のセルだけが、A2・A3・A4…と変化するので、「0.1」から「1.0」までの小数が、第16位・第17位・第18位まで強制的に表示されています。
出力されたデータ
B1:B10セルには以下のようなデータが並びます。
0.1000000000000000 0.10000000000000001 0.100000000000000006 0.2000000000000000 0.20000000000000001 0.200000000000000011 0.3000000000000000 0.29999999999999999 0.299999999999999989 0.4000000000000000 0.40000000000000002 0.400000000000000022 0.5000000000000000 0.50000000000000000 0.500000000000000000 0.6000000000000000 0.59999999999999998 0.599999999999999978 0.7000000000000000 0.69999999999999996 0.699999999999999956 0.8000000000000000 0.80000000000000004 0.800000000000000044 0.9000000000000000 0.90000000000000002 0.900000000000000022 1.0000000000000000 1.00000000000000000 1.000000000000000000
これは、Pythonで、
for i in range(1, 10):
x = i/10
print(f'{x:.16f}', f'{x:.17f}', f'{x:.18f}')
を実行したのと同じデータです。
Excelのセルには15桁を超えた数値を表示できませんが、内部では(当然ながら?)IEEE 754に準拠した値を扱っているということです。
最終更新日時:2024-01-05 08:55
Home » Python » Python in Excelの使い方 » Python in Excelならセル上の小数がどんな値なのかを確認できる