While I was messing around with Python, 

```
>>> [attr for attr in dir(1) if not attr.startswith('_')]
['bit_length', 'conjugate', 'denominator', 'imag', 'numerator', 'real']
>>> [attr for attr in dir(1.1) if not attr.startswith('_')]
['as_integer_ratio', 'conjugate', 'fromhex', 'hex', 'imag', 'is_integer', 'real']

```

Although I understand that 'conjugate', 'imag', and 'real' are there for the sake of compatibility with complex type, I can't understand why 'numerator' and 'denominator' exists for int only, and doesn't for a float. 

Any explanation for that ?