计算要填充的可用插槽数量
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算要填充的可用插槽数量相关的知识,希望对你有一定的参考价值。
想象一下,我有一个4x5容器,内部有20个可用插槽。在这个容器中,我有13个方块和7个圆圈:
但现在容器缩小到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:
答案
选择您想要“权威”的数字(圆圈或正方形,无关紧要),然后从总槽数中减去该数字以获得另一个数字。
> slots = 20
> squares = 13
> circles = 7
> newslots = 9
> newsquares = Math.round(newslots/slots*squares)
6
> newcircles = newslots - newsquares
3
以上是关于计算要填充的可用插槽数量的主要内容,如果未能解决你的问题,请参考以下文章