J'essayais de normaliser un ensemble de nombres de -100 à 0 dans une plage de 10 à 100 et j'avais des problèmes uniquement pour remarquer que même sans aucune variable, cela n'évalue pas la façon dont je m'attendais à ce qu'il le fasse:
>>> (20-10) / (100-10)
0
La division Float ne fonctionne pas non plus:
>>> float((20-10) / (100-10))
0.0
Si l'un des côtés de la division est jeté sur un flotteur, cela fonctionnera:
>>> (20-10) / float((100-10))
0.1111111111111111
Chaque côté du premier exemple est évalué comme un int, ce qui signifie que la réponse finale sera convertie en un int. Puisque 0,111 est inférieur à 0,5, il s'arrondit à 0. Ce n'est pas transparent à mon avis, mais je suppose que c'est ainsi.
Quelle est l'explication?