Я пытался нормализовать набор чисел от -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. Это не прозрачно, на мой взгляд, но я думаю, что так оно и есть.
Какое объяснение?