>>133 ボケてるのどっち?

15. 浮動小数点演算、その問題と制限
https://docs.python.org/ja/3.7/tutorial/floatingpoint.html

近年の殆どのコンピュータでは float 型は、分子に最も重大なビットから始めて最初の 53 ビットを使い、分母に 2 の累乗を使った、二進小数を使って近似されます。
 1/10 の場合は、二進小数は 3602879701896397 / 2 ** 55 となります。
これは、1/10 に近いですが、厳密に同じ値ではありません。

ハードウェアの浮動小数点演算をサポートしている全ての言語で同じ種類の問題を見つけることができます

Python は 本当に float の正確な値が必要なレアケースに対応するためのツールを提供しています。 float.as_integer_ratio() メソッドは float の値を有理数として表現します:

>>> x = 3.14159
>>> x.as_integer_ratio()
(3537115888337719, 1125899906842624)

>>> x == 3537115888337719 / 1125899906842624
true


fractions モジュールと decimal モジュールを使うとこれらの計算を簡単に行えます