Pythonのfloat
型は、最上位ビットから数えて最初の53ビットを分子、2の冪乗を分母とした、二進小数で近似されます。float
型の最大値は実行環境によっても異なりますが、大部分の環境では$1.7976931348623157 \times 10^{308}$です。
しかし、float
型では123456789すらも表現できないことがあります。これは、float
型が内部的に2進数で数値を表現しているためで、全ての10進数が正確に2進数で表現できるわけではないからです。
例えば、0.1
は2進数で近似された値としてマシンに記憶され、その近似値は$3602879701896397 / 2^{55}$となります。これは、0.1
に近いですが、厳密に同じ値ではありません。そのため、0.1 + 0.1 + 0.1
と0.3
が等しくないという現象が起こります。
このように、Pythonのfloat
型は、大きな数値を扱うことができますが、その精度には限りがあります。そのため、高精度の計算を必要とする場合には、適切なデータ型の選択や、数値計算ライブラリの利用が重要となります。