我试图将从-100到0的一组数字归一化为10到100的范围,并且遇到了问题,但是我注意到即使没有任何变量,它也不会如我所期望的那样求值:
>>> (20-10) / (100-10)
0
浮点数除法也不起作用:
>>> float((20-10) / (100-10))
0.0
如果除法运算符的任一操作数被强制转换为浮点数,它将起作用:
>>> (20-10) / float((100-10))
0.1111111111111111
在第一个例子中,每个操作数都被计算为整数,这意味着最终答案将被转换为整数。由于0.111小于0.5,所以它会四舍五入为0。在我看来,这不太透明,但我想那就是这样。
请解释一下原因?
float
被调用,并且无论何时调用某些东西,都会在调用之前评估参数。float
只看到一个整数,无法推断产生该整数的计算结果。" - Karl Knechtel