将范围数压缩两个最大百分比和最小百分比[重复]
Posted
技术标签:
【中文标题】将范围数压缩两个最大百分比和最小百分比[重复]【英文标题】:Compress a range number by two max percent and min percent [duplicate] 【发布时间】:2021-08-23 23:44:51 【问题描述】:假设我的范围是 100-1。现在,我想将该范围从顶部压缩 10%,从底部压缩 25%。所以我的最终范围是 90-25。
关于如何将给定从 100 到 1 的任意数字的函数转换为 90-25 范围的任何想法?
【问题讨论】:
解决方案在这里***.com/questions/929103/… 啊,好吧,我现在终于明白你的问题了:-D 对我来说,你希望将比率保持在两者之间,而不仅仅是“扔掉新范围之外的所有东西”。感谢您链接到那个! 我没有正确解释自己。我的错。 不用担心 - 很高兴您找到了可行的解决方案! 【参考方案1】:让u
为大数(在您的示例中:100),l
为小数(示例:1),因此您希望将区间/范围/...[1, 100]
转换为缩小一个。
根据通常的数学知识,从底部/顶部删除一些百分比与仅移动该数字相同,因此在您的情况下,您可能希望使用间隔 [l * 0.25, u * 0.9]
而不是 [l, u]
。这当然可以推广到所有其他值。
如果您不想要有理数而只想要整数,则必须考虑是否要将更多或更少缩小到 25/10%因为你不能准确。
现在使用这个新间隔,您可以使用伪代码创建该函数:
def transform(n, lower, upper):
interval = [lower * 0.25, upper * 0.9]
if n in interval:
return n
else if n < lower * 0.25:
return lower * 0.25
else if n > upper * 0.9:
return upper * 0.9
【讨论】:
在您的示例中,我不清楚如何对数字进行转换。我的函数应该类似于transform(n, u=0.1, l=0.25)
如果 n 为 1,则输出应为 25,但如果 n 为 100,则输出应为 90。
啊好吧,现在我想我明白了,从问题中我并不清楚。所以例如50应该输出50呢?编辑:更新了代码。以上是关于将范围数压缩两个最大百分比和最小百分比[重复]的主要内容,如果未能解决你的问题,请参考以下文章
javascript 计算两个值(最小值,最大值)和值之间的百分比