Warum sieht der Gleitkommawert von 4 * 0.1 in Python 3 gut aus, aber 3 * 0.1 nicht?

Ich weiß, dass die meisten Dezimalstellen keine exakte Gleitkommadarstellung haben Ist Gleitkomma-Mathematik kaputt?).

Aber ich verstehe nicht warum4*0.1 wird schön gedruckt als0.4, aber3*0.1 ist nicht, wenn beide Werte tatsächlich hässliche Dezimaldarstellungen haben:

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

Antworten auf die Frage(8)

Ihre Antwort auf die Frage