这是一个比CS问题更多的数学,但我想在CS中给出答案。
我想要做的是找到一个相对于最大值的值。例如,值为3.最大值为6.因此,此值为最大值的0.5。
它可以像这样轻松实现: currentValue / max
然而,如果现在我说有负面的话。 假设最大值为-6,当前值为-7。我需要使用最小值。所以说最小值是-8。在这种情况下,-7将为-6的0.5。
但是,如何将当前值表示为负数的等式(使用最大值和最小值)?
答案 0 :(得分:4)
我假设当max
为正时,min
为零,因为这就是你的例子所暗示的。
给定input
的最终价值是从min
到max
的更改的比例,即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的值,在您选择的分子中,您可以找到并使用较小的段。如果当前值和零段比零和最大值之间的段短,请使用前者作为分子。