Por que o valor do ponto flutuante de 4 * 0,1 fica bonito no Python 3, mas 3 * 0.1 não?

Eu sei que a maioria dos decimais não tem uma representação exata de ponto flutuante (A matemática do ponto flutuante está quebrada?)

Mas não vejo por que4*0.1 é impresso bem como0.4, mas3*0.1 não é, quando os dois valores realmente têm representações decimais feias:

>>> 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')

questionAnswers(4)

yourAnswerToTheQuestion