代码之家  ›  专栏  ›  技术社区  ›  Matt McManis

标准化范围-100至100至0至3

  •  -1
  • Matt McManis  · 技术社区  · 6 年前

    我有一个数字范围 -100 100 .

    我想把它正常化 0 3 带小数点。

    -100 = 0
    -50  = 0.75
     0   = 1.5
     50  = 2.25
     100 = 3
    

    我想创建一个程序函数来将任何范围规范化为任何值,例如:

    http://rextester.com/ZJWNS24313

    double Normalize(double val, double valmin, double min, double max) 
    {
        return (val - valmin) / (max - min);
    }
    

    然而,这并不能给出正确的输出。

    一百 变成 66.6666666666667 而不是 .


    如果我把公式乘以一个小数 0.045 结果证明是正确的。

    ((100 - -100) / (3 - 0)) * 0.045 =

    ((50 - -100) / (3 - 0)) * 0.045 = 2.25

    ((-50 - -100) / (3 - 0)) * 0.045 = 0.75

    但是如何才能使公式成为这样,我就不必在末尾指定小数了?

    因为如果我想规范化一个新的数字 5 我得把它换成 0.125 .

    1 回复  |  直到 6 年前
        1
  •  2
  •   cainns98    6 年前

    double Normalize(double val, double valmin, double valmax, double min, double max) 
    {
        return (((val - valmin) / (valmax - valmin)) * (max - min)) + min;
    }