Почему значение с плавающей точкой 4 * 0.1 выглядит хорошо в Python 3, а 3 * 0.1 - нет?

Я знаю, что большинство десятичных чисел не имеют точного представления с плавающей запятой (Математика с плавающей точкой нарушена?).

Но я не понимаю почему4*0.1 печатается красиво как0.4, но3*0.1 нет, когда оба значения на самом деле имеют уродливые десятичные представления:

>>> 3*0.1
0.30000000000000004
>>> 4*0.1
0.4
>>> from decimal import Decimal
>>> Decimal(3*0.1)
Decimal('0.3000000000000000444089209850062616169452667236328125')
>>> Decimal(4*0.1)
Decimal('0.40000000000000002220446049250313080847263336181640625')

Ответы на вопрос(4)

Ваш ответ на вопрос