首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >压缩大数字的公式,但将较小的数字保持在1到100范围内。

压缩大数字的公式,但将较小的数字保持在1到100范围内。
EN

Stack Overflow用户
提问于 2022-06-18 09:53:49
回答 1查看 44关注 0票数 -4

我把芯片显示为DOM中的div。

如果我有一个芯片,我有1个芯片,2个芯片,2个芯片,3个芯片,3个芯片,4个芯片,3个芯片。

由于这可以快速获得高的数字与许多不同颜色的9名玩家的芯片,我想要一个函数限制这个数字到合理的值,同时保留对芯片数量的视觉指示。

代码语言:javascript
运行
复制
// Map range 1-100 to 1-20 in a super exponential fashion so smaller chips don't get any smaller, but big numbers get trimmed down.
function m_n_chips(actual_chips: number) {
  if (actual_chips < 4) { return actual_chips }

  // what else do I need here
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-18 15:37:28

描述的行为让我想起了根函数。它不影响小的数字,但我们插入到函数中的数字越大,它就越被压缩。

你可以通过将x乘以一个系数来改变“压扁因子”。

或者,您可以使用一个对数函数,它与指数相反。这会产生更大的压扁效果。

代码语言:javascript
运行
复制
function m_n_chips(actual_chips: number) {
  if (actual_chips < 4) { return actual_chips }

  result = Math.sqrt(4 * x);
  // other option: use logarithm
  // result = Math.log(x) / Math.log(4);

  return Math.round(result);
}

返回时,我们将结果转换为最近的整数。

希望这能帮上忙!

(顺便说一句:为了将来,请提供更多的信息,例如语言、项目细节以及你是如何回答问题的)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72668322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档