Я пытался нормализовать набор чисел от -100 до 0 в диапазоне 10-100, и у меня возникли проблемы только с тем, чтобы заметить, что даже без переменных вообще это не оценивает то, как я ожидал :
>>> (20-10) / (100-10)
0
Деление поплавка тоже не работает:
>>> float((20-10) / (100-10))
0.0
Если любая из сторон дивизии разыграна в поплавок, она будет работать:
>>> (20-10) / float((100-10))
0.1111111111111111
Каждая сторона в первом примере оценивается как int, что означает, что окончательный ответ будет приведен к int. Поскольку 0,111 меньше 0,5, оно округляется до 0. На мой взгляд, оно не прозрачно, но, думаю, так оно и есть.
Какое объяснение?