计算两个数字之间的小数的基本公式

时间:2018-01-17 17:27:37

标签: javascript math formula

我有一个大脑放屁,需要基本配方的帮助。

if (d >= 0.1) {
   scale = 0.1
} else if (d <= 0.004) {
   scale = 1;
}

如果d的值介于0.1和0.004之间,如何将scale的值设置为介于0.1和1之间?

3 个答案:

答案 0 :(得分:3)

您可以添加else语句来处理0.0040.1之间的数字:

// ...
else {
    scale = 1 - (d - 0.004) * (1 - 0.1) / (0.1 - 0.004);
}

或者你可以一次完成整个事情:

var scale = 1 - (Math.max(Math.min(d, 1), 0.004) - 0.004) * (1 - 0.1) / (0.1 - 0.004);

答案 1 :(得分:2)

缩放应如下所示:

scale = 1 - (1 - 0.1)*(d - 0.004)/(0.1 - 0.004)

或更简单

scale = 1 - 9.375*(d - 0.004)

例如,如果d = 0.05,则为scale = 0.56875

答案 2 :(得分:1)

如果我从评论中正确理解,这是您计算的模式。 dRange是d值的范围。输入值受限制也会限制输出。

注意:首先限制输入值d,以便我们可以镜像2个绝对“比例”:dRange和{{1 }及其相应的最小值和最大值。

注意:倒置scaleRange,其中scaleRange(最大值)在左边,1(最小值)是右边:

0.1

这是一些更复杂的逻辑,值得采用稍微更具声明性的方法。我想出了以下内容来实现上面的场景。进一步的解释在代码注释中:

           0.004                   <-- dRange -->                          0.1
 ~~~~~~~~~~~~|--------------------------------------------------------------|~~~~~~~~~~~~

In: ~~~d~~~~~d----------------------d---------------------------------------d-----d------
       |     |                      |                                       |     |
       ----->|                      |                                       |<----
             |                      |                                       |
Limited:   [d,d]--------------------d-------------------------------------[d,d]
             |                      |                                       |
Out:       [x,x]--------------------x-------------------------------------[x,x]

 ~~~~~~~~~~~~|--------------------------------------------------------------|~~~~~~~~~~~~
             1                  <-- scaleRange -->                         0.1