Representaciones de punto flotante inesperadas en Python

Hola, estoy usando un diccionario en Python que almacena algunas ciudades y su población así:

population = { 'Shanghai' : 17.8, 'Istanbul' : 13.3, 'Karachi' : 13.0, 'mumbai' : 12.5 }

Ahora si uso el comandoprint population, Me sale el resultado:

{'Karachi': 13.0, 'Shanghai': 17.800000000000001, 'Istanbul': 13.300000000000001, 'mumbai': 12.5}

mientras que si uso el comandoprint population['Shanghai'] Tengo la entrada inicial de17.8.

Mi pregunta para usted es cómo funciona el17.8 y el13.3 convertido en17.800000000000001 y13.300000000000001 ¿respectivamente? ¿Cómo se produjo toda esa información? ¿Y por qué se almacena allí, ya que mi entrada inicial denota que no necesito esa información adicional, al menos hasta donde sé?

Respuestas a la pregunta(3)

Su respuesta a la pregunta