javascript - 数学逻辑,将可缩放数字转换为百分比

标签 javascript algorithm math linear-algebra equation

我在寻找解决此问题的最佳方法时遇到了一些问题。我想显示 0-100 的百分比。我的输入(X)是以米为单位的距离。 X 越接近 0,我希望百分比越接近 100。

我的问题是,人们必须能够知道他们是否正在接近 0。无论范围有多远。因此,如果他们距离 10000 米并达到 9900 米,我需要增加百分比。但如果他们距离 50 米,达到 45 米,情况也是一样。

现在我正在做

100 - ((playerDistance / max) * 100)

其中 max 是某人可以达到的米的最大值。对于我的情况来说大约是300,000。如果他们旅行很远,这很有效。但一旦它们进入几千米范围内,它就会失去所有精度,因为在很长一段时间内精度都会保持在 99%。

最佳答案

您可以应用参数 0 值为 1 (100%) 并平滑减小的任何函数。

一对示例(Python 语法)

100.0 * math.exp( - dist / 1000.0)
100.0 * math.pow(1 + dist, -0.3)

请注意,您无法提供涵盖所有所需范围的整数百分比值,因此您必须在点后显示至少三位小数(例如 54.321)。

另请注意,指数方法为相等的 distance1/distance2 比率提供了相等的百分比增量

关于javascript - 数学逻辑,将可缩放数字转换为百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60050765/

相关文章:

javascript - 我如何完成这个百分比问题

math - 如何建立透视投影矩阵(无API)

javascript - 使用 $.each() 遍历 document.styleSheets 时出现无效的过程调用或参数 IE 问题

javascript - 使用react-router-dom在同一页面上进行不需要的渲染

javascript - if else 语句未按预期工作

java - 帮助解决算法

c++ - DirectX 数学函数混淆

javascript - 如何在 li 元素中的 ng-if 中发送作用域变量?

java - 使用非递归排序阈值的合并排序

algorithm - 检查数值约束表达式的允许值的等价性/子集