最大值的相对值数学问题

时间:2011-02-16 13:24:30

标签: java math

这是一个比CS问题更多的数学,但我想在CS中给出答案。

我想要做的是找到一个相对于最大值的值。例如,值为3.最大值为6.因此,此值为最大值的0.5。

它可以像这样轻松实现: currentValue / max

然而,如果现在我说有负面的话。 假设最大值为-6,当前值为-7。我需要使用最小值。所以说最小值是-8。在这种情况下,-7将为-6的0.5。

但是,如何将当前值表示为负数的等式(使用最大值和最小值)?

3 个答案:

答案 0 :(得分:4)

我假设当max为正时,min为零,因为这就是你的例子所暗示的。

给定input的最终价值是从minmax的更改的比例,即min的更改至input由...组成。在公式中实际上更容易:

Final value = (input - min) / (max - min)

例如:

min = 0
max = 6
input = 3
Final value = (3 - 0) / (6 - 0) = 3 / 6 = 0.5

min = -8
max = -6
input = -7
Final value = (-7 - -8) / (-6 - -8) = 1 / 2 = 0.5

答案 1 :(得分:0)

实际上,您希望将最小值视为轴上的零。要做到这一点,只需从所有值中减去min,然后给出

(currentValue - min) / (max - min)

你应该检查以确保你没有除以零。

答案 2 :(得分:0)

情况1:如果在最大数值和当前值之间出现零,则可以使用当前值与零之间的距离与当前值和最大值之间的总距离。

情况2:如果最大值介于当前值和零之间,则可以使用当前值与最大值之间的距离,以及零与当前值​​之间的总距离。

情况3:如果当前值介于最大值和零之间,则使用零点和当前值之间的距离,使其与零点和最大值之间的距离保持一致。

因为您需要一个从0到1的值,在您选择的分子中,您可以找到并使用较小的段。如果当前值和零段比零和最大值之间的段短,请使用前者作为分子。