Я знаю, что большинство десятичных знаков не имеют точного представления с плавающей запятой (Является ли математика с плавающей запятой?).
Но я не понимаю, почему 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')