This might be illuminating:
>>> float.hex(2.2 * 3.0)
'0x1.a666666666667p+2'
>>> float.hex(3.3 * 2.0)
'0x1.a666666666666p+2'
>>> float.hex(6.6)
'0x1.a666666666666p+2'
Although they are all displayed in decimal as 6.6
, when you inspect the internal representation, two of them are represented in the same way, while one of them is not.