我正在尝试将包含在两个整数范围内的值转换为包含在另一个给定范围内的另一个整数。我希望输出值是我的输入整数的对应值(尊重比例)。更清楚地说,这是我想解决的问题的一个例子:
- 假设我有三个整数,比如 10、28 和 13,它们包含在 (10, 28) 范围内。10 是最小可能值,28 是最大可能值。
- 我希望将整数转换为 (5, 20) 范围内的“相应”数字作为输出。在这个精确的示例中,10 将转换为 5,28 转换为 20,13 转换为 5 到 20 之间的值,重新调整以保持比例不变。之后,这个值被转换为整数。
如何在 python 中实现这种“重新缩放”?我尝试了通常的计算(value/max of first range)*max of second range
,但它给出了错误的值,除非在极少数情况下。
起初我int
在 python 中的除法有问题,但在更正后,我仍然有错误的值。例如,使用示例中给出的值,int((float(10)/28)*20)
将给我 7 作为结果,它应该返回 5,因为它是第一个范围内的最小可能值。
我觉得这有点明显(在逻辑和数学方面),我遗漏了一些东西。