I suggest you print the exact actually represented values to see the differences:
>>> for s in '0.1', '1/10', '1.1', '1.1 - 1', '1.1 % 1', '0.05 + 0.05':
print(s.rjust(11), ('=> %.70f' % eval(s)).rstrip('0'))
0.1 => 0.1000000000000000055511151231257827021181583404541015625
1/10 => 0.1000000000000000055511151231257827021181583404541015625
1.1 => 1.100000000000000088817841970012523233890533447265625
1.1 - 1 => 0.100000000000000088817841970012523233890533447265625
1.1 % 1 => 0.100000000000000088817841970012523233890533447265625
0.05 + 0.05 => 0.1000000000000000055511151231257827021181583404541015625
As you see (and should expect), 1.1
has a larger absolute error than 0.1
. Subtracting 1
is exact, so the larger absolute error remains.