将范围数压缩两个最大百分比和最小百分比[重复]

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 计算两个值(最小值,最大值)和值之间的百分比

将角度从转换为最小/最大旋转的百分比

汇编语言实现求两个数的最小公约数,平方差,各占和的百分比

父级具有最小/最大高度时的 CSS 百分比高度

需要弹性说明:宽度、最小(最大)宽度、显式宽度、显式最小(最大)宽度、测量宽度、测量最小宽度、百分比宽度

如何将最大宽度设置为百分比和像素?