计算要填充的可用插槽数量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算要填充的可用插槽数量相关的知识,希望对你有一定的参考价值。

想象一下,我有一个4x5容器,内部有20个可用插槽。在这个容器中,我有13个方块和7个圆圈:

enter image description here

但现在容器缩小到3x3,只有9个可用插槽。

我想在这个较小的容器中显示相同的正方形与圆的比率,每个容器的最后一个是剩下的项目的堆栈。

现在,我将计算每种类型的项目,除以所有项目的总数,得到该类型构成总计数的百分比值,然后乘以容器大小:

const percentage = typeCount / totalCount;
const spaceUnrounded = percentage * availableSlots;

所以这不是问题。当我需要将其舍入为整数以获得正确数量的槽时,问题就出现了。现在我找到了价值的底线:

const space = Math.floor(spaceUnrounded);

但这会导致物品留空1个空间。我也尝试找到第一种类型的值的上限,然后是其余的下限:

const space = index === 0 ? Math.ceil(spaceUnrounded) : Math.floor(spaceUnrounded);

但这可能会导致项目增加1个额外空间,具体取决于项目类型的数量。

Math.round也有同样的问题。

我能在这做什么?

编辑:我的预期输出可能是6个方格和3个圆圈,因为13是20%的65%,9%的65%是5.85:

enter image description here

答案

选择您想要“权威”的数字(圆圈或正方形,无关紧要),然后从总槽数中减去该数字以获得另一个数字。

> slots = 20
> squares = 13
> circles = 7
> newslots = 9
> newsquares = Math.round(newslots/slots*squares)
6
> newcircles = newslots - newsquares
3

以上是关于计算要填充的可用插槽数量的主要内容,如果未能解决你的问题,请参考以下文章

mpirun - 没有足够的可用插槽

在 Render 函数中构建动态数量的 Vue 插槽

计算光栅化片段的数量

计算机基础-主板

为啥尽管源代码没有变化,但从一个系统到另一个系统的片段数量却有很大差异?

vue3 | slots