Estaba tratando de normalizar un conjunto de números de -100 a 0 a un rango de 10-100 y estaba teniendo problemas solo para notar que, incluso sin ninguna variable, esto no evalúa la forma en que esperaría que:
>>> (20-10) / (100-10)
0
La división de flotación tampoco funciona:
>>> float((20-10) / (100-10))
0.0
Si cualquiera de los lados de la división se lanza a flotación, funcionará:
>>> (20-10) / float((100-10))
0.1111111111111111
Cada lado en el primer ejemplo está evaluando como un int, lo que significa que la respuesta final se lanzará a un int. Como 0.111 es menor que .5, se redondea a 0. En mi opinión, no es transparente, pero supongo que así es.
¿Cuál es la explicación?